SlideShare a Scribd company logo
From development to continuous deployment.
Docker
Alin Voinea
Eau de Web, Romania
Plone
&
What is?
What is Docker?
Docker is for your system...
What is Docker?
...what virtualenv is for Python
What is Docker?
● Isolated environment
● Same environment (Linux, Mac, Windows...)
● Same environment (Devel, Production)
● Use your favorite Linux distribution
● ...or, build it from scratch
Before Docker
Installing and running Plone
without Docker
Plone - w/o Docker
Libraries
● libz (dev)
● libjpeg (dev)*
● readline (dev)*
● libexpat (dev)
● libssl or openssl (dev)
● libxml2 >= 2.7.8 (dev)*
● libxslt >= 1.1.26 (dev)*
Source:docs.plone.org
Python
● Python 2.7 (dev), built with support for
expat (xml.parsers.expat), zlib and ssl.
● (Python XML support may be a separate
package on some platforms.)*
● virtualenv*
Plone - w/o Docker
Minimal build
~/$ mkdir Plone-5
~/$ cd Plone-5
~/Plone-5$ virtualenv-2.7 zinstance
~/Plone-5$ cd zinstance
~/Plone-5/zinstance$ bin/pip install zc.buildout
~/Plone-5/zinstance$
echo """
[buildout]
extends =
http://dist.plone.org/release/5-latest/versions.cfg
parts =
instance
[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
http-address = 8080
eggs =
Plone
Pillow
""" > buildout.cfg
Source:docs.plone.org
Plone - w/o Docker
This will start a long download and build process ...
Errors like "SyntaxError: ("'return' outside function"..."" may be ignored.
After it finished you can start Plone in foreground-mode with:
$ bin/buildout
$ bin/instance fg
Source:docs.plone.org
Installing and running Plone
with Docker
Plone - w/ Docker
$ docker run -p 8080:8080 plone
hub.docker.com/_/plone
Plone Add-ons
Plone Add-ons
$ docker run 
-e ADDONS=”eea.facetednavigation collective.easyform” 
plone
Develop Plone Add-ons
$ mkdir src
$ cd src
$ git clone https://github.com/collective/eea.facetednavigation
$ chown -R 500 ../src
$ docker run 
-e ADDONS=”eea.facetednavigation” 
-e DEVELOP=”src/eea.facetednavigation” 
-v /host/path/to/src:/plone/instance/src 
plone fg
Debugging - pdb.set_trace()
● Run Plone from the inside of the container
$ docker run -it -e… plone bash
$ bin/instance fg
.
..
...
Zope ready to handle requests
...
(pdb)
Storage
Where is my Data.fs?
● Docker volume
$ docker run plone
$ docker volume ls
local f2b18118ef8c5e7c9ef10ef418f27e2a51502220ddecc218c9d28f
● Default location
$ ls /var/lib/docker/volumes
f2b18118ef8c5e7c9ef10ef418f27e2a51502220ddecc218c9d28f
Where is my Data.fs?
● Docker volume labels
$ docker run -v plone-data:/data plone
$ docker volume ls
plone-data
Where is my Data.fs?
● Unlabeled Docker volumes
$ docker run --name my-plone plone
$ docker volume ls
e2c080c412bc4d33b7d740ca7fee25
● On remove:
$ docker rm -v my-plone
$ docker volume ls
OMG, WHERE IS MY DATA?
Where is my Data.fs?
● Always LABEL your Docker volumes to avoid data loss
$ docker run --name=my-plone -v plone-data:/data plone
● On remove
$ docker rm -v my-plone
$ docker volume ls
plone-data
● Explicitly remove volumes:
$ docker volume rm plone-data
ZEO
# zeo client 1
$ docker run --link=zeo 
-e ZEO_ADDRESS=zeo:8100 plone
ZEO Server / ZEO Clients
# zeo server
$ docker run --name=zeo plone zeoserver
# zeo client 1
$ docker run --link=zeo 
-e ZEO_ADDRESS=zeo:8100 plone
Extend
Extending
● extended_buildout.cfg
● Dockerfile
Extend: extended_buildout.cfg
[buildout]
eggs +=
plone.restapi
collective.easyform
collective.solr
eea.facetednavigation
Extend: Dockerfile
FROM plone:5.0.6
USER root
RUN apt-get install -y ...
USER plone
COPY extended_buildout.cfg /plone/instance/
RUN bin/buildout -c my_buildout.cfg
Extend: Build & Run
$ docker build -t my-plone:5 .
$ docker run my-plone:5
Extend: Dockerfile documentation
docs.docker.com/engine/reference/builder
Orchestration: Single host
$ pip install docker-compose
Docker Compose: Plone & ZEO
$ vim docker-compose.yml
$ docker-compose up
$ docker-compose scale plone=3
version: "2"
volumes:
plone-data:
driver: local
services:
plone:
image: plone
environment:
- ZEO_ADDRESS=zeo:8100
zeo:
image: plone
command: zeoserver
volumes:
- plone-data:/data
Docker Compose: Load balancer
$ vim docker-compose.yml
$ docker-compose up
services:
...
load-balancer :
image: eeacms/haproxy
ports:
- 80:5000
- 1936:1936
environment:
- BACKENDS=plone
- BACKENDS_PORT=8080
- DNS_ENABLED=True
Docker Compose: Demo
https://youtu.be/DumoVlrOk4w
Docker Compose: Documentation
docs.docker.com/compose
Orchestration: Multiple hosts
Rancher
“A Complete Platform for Running
Containers”
Rancher: Install & running
$ docker run -p 8080:8080 rancher/server
Rancher: Demo
https://youtu.be/44zzuAUS-1M
Continuous Deployment
Docs
● hub.docker.com/_/plone
● docs.plone.org (soon)
● docker.com
● rancher.com
● github.com/eea?query=docker
Thanks
● Sven Strack
● Antonio de Marinis
● Eau de Web
● Liana Voinea (my wife)
Docker and plone

More Related Content

PDF
Plone and docker
PPTX
Dockerandjenkins citz2014
PPTX
Docker & Kubernetes
PPTX
Docker - Build, Ship, and Run Any App, Anywhere
PDF
Conan a C/C++ Package Manager
PPTX
Introduction to Docker
PPTX
DevOps: Docker Workshop
PPTX
Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Plone and docker
Dockerandjenkins citz2014
Docker & Kubernetes
Docker - Build, Ship, and Run Any App, Anywhere
Conan a C/C++ Package Manager
Introduction to Docker
DevOps: Docker Workshop
Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

What's hot (19)

PPTX
Dockerizing pharo
PDF
Usando docker en Azure
PDF
Conan.io - The C/C++ package manager for Developers
PPTX
DrupalCafe Vol.35 - Dockerで始めるDrupal
PDF
Python - Flask - miniapp - ignite
PDF
當專案漸趕,當遷移也不再那麼難 (Ship Your Projects with Docker EcoSystem)
PDF
Workshop - Golang language
PDF
Docker in Action
PDF
Iniciando com Docker
PPTX
Docker 101
PDF
Ratpack On the Docks
PDF
Groovy Powered Clean Code
PPTX
Docker Introduction
PDF
Docker - from development to production (PHPNW 2017-09-05)
PPTX
Meetup #24 Docker for Node Developer
PDF
Builder and BuildKit
PDF
Deploying a Pylons app to Google App Engine
PDF
Gitlab - Creating C++ applications with Gitlab CI
PPTX
Docker Ecosystem: Part III - Machine
Dockerizing pharo
Usando docker en Azure
Conan.io - The C/C++ package manager for Developers
DrupalCafe Vol.35 - Dockerで始めるDrupal
Python - Flask - miniapp - ignite
當專案漸趕,當遷移也不再那麼難 (Ship Your Projects with Docker EcoSystem)
Workshop - Golang language
Docker in Action
Iniciando com Docker
Docker 101
Ratpack On the Docks
Groovy Powered Clean Code
Docker Introduction
Docker - from development to production (PHPNW 2017-09-05)
Meetup #24 Docker for Node Developer
Builder and BuildKit
Deploying a Pylons app to Google App Engine
Gitlab - Creating C++ applications with Gitlab CI
Docker Ecosystem: Part III - Machine
Ad

Viewers also liked (8)

PDF
Plone + AWS at Plone Symposium tokyo 2015
PPTX
Trace Lessons Learned H4Dip Stanford 2016
PPTX
Aggregate db Lessons Learned H4Dip Stanford 2016
PPTX
Peacekeeping Lessons Learned H4Dip Stanford 2016
PPTX
Space Evaders Lessons Learned H4Dip Stanford 2016
PPTX
Exodus Lessons Learned H4Dip Stanford 2016
PPTX
Hacking CT Lessons Learned H4Dip Stanford 2016
PPTX
Fatal journeys (Team 621) Lessons Learned H4Dip Stanford 2016
Plone + AWS at Plone Symposium tokyo 2015
Trace Lessons Learned H4Dip Stanford 2016
Aggregate db Lessons Learned H4Dip Stanford 2016
Peacekeeping Lessons Learned H4Dip Stanford 2016
Space Evaders Lessons Learned H4Dip Stanford 2016
Exodus Lessons Learned H4Dip Stanford 2016
Hacking CT Lessons Learned H4Dip Stanford 2016
Fatal journeys (Team 621) Lessons Learned H4Dip Stanford 2016
Ad

Similar to Docker and plone (20)

PDF
Docker & rancher
PPTX
Docker slides
PDF
Using docker for data science - part 2
PDF
DockerCon17 - Building The Super-Dynamic Demo Center
PDF
Portainer.io Intro | Into The Box 2018
PDF
Be a better developer with Docker (revision 3)
PDF
Docker in production: problems, fixes and beyond
PPTX
Docker Starter Pack
PDF
Docker 0.11 at MaxCDN meetup in Los Angeles
PDF
Docker for Deep Learning (Andrea Panizza)
PDF
Docker Intro
PDF
Docker Clustering - Batteries Included
PDF
Agile Brown Bag - Vagrant & Docker: Introduction
PDF
Streamline your development environment with docker
PDF
DCEU 18: Tips and Tricks of the Docker Captains
PDF
Docker Online Meetup #3: Docker in Production
PDF
Docker primer and tips
PDF
Work shop - an introduction to the docker ecosystem
PDF
Docker - From Walking To Running
Docker & rancher
Docker slides
Using docker for data science - part 2
DockerCon17 - Building The Super-Dynamic Demo Center
Portainer.io Intro | Into The Box 2018
Be a better developer with Docker (revision 3)
Docker in production: problems, fixes and beyond
Docker Starter Pack
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker for Deep Learning (Andrea Panizza)
Docker Intro
Docker Clustering - Batteries Included
Agile Brown Bag - Vagrant & Docker: Introduction
Streamline your development environment with docker
DCEU 18: Tips and Tricks of the Docker Captains
Docker Online Meetup #3: Docker in Production
Docker primer and tips
Work shop - an introduction to the docker ecosystem
Docker - From Walking To Running

More from Alin Voinea (15)

PDF
EEA and Plone Lightning at Plone Conference 2024 Brasilia
PPTX
EEA & Eau de Web Front-end add-ons - Plone conference 2023
PDF
EEA Faceted Navigation and Plone 6.pdf
PPTX
EEA Volto Add-ons - Plone Conference 2020
PPTX
Plone 6 / Volto Dexterity Content Types - Schema & Layout
PDF
Continuous Delivery/Deployment w/ Gitflow, Docker, Jenkins and Rancher
PDF
Faceted navigation in Plone 5
PDF
Plone and docker
PDF
Kotti CMS 101
PDF
Developing Single Page Applications on Plone using AngularJS
PDF
Responsive design in plone
PPTX
Display eea’s semantic content with elasticsearch and node.js applications sh...
PPTX
New EEA Plone Add-ons
PDF
Python eggs (RO)
PDF
Data visualization in plone
EEA and Plone Lightning at Plone Conference 2024 Brasilia
EEA & Eau de Web Front-end add-ons - Plone conference 2023
EEA Faceted Navigation and Plone 6.pdf
EEA Volto Add-ons - Plone Conference 2020
Plone 6 / Volto Dexterity Content Types - Schema & Layout
Continuous Delivery/Deployment w/ Gitflow, Docker, Jenkins and Rancher
Faceted navigation in Plone 5
Plone and docker
Kotti CMS 101
Developing Single Page Applications on Plone using AngularJS
Responsive design in plone
Display eea’s semantic content with elasticsearch and node.js applications sh...
New EEA Plone Add-ons
Python eggs (RO)
Data visualization in plone

Recently uploaded (20)

PPTX
A Presentation on Artificial Intelligence
PDF
cuic standard and advanced reporting.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Modernizing your data center with Dell and AMD
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
A Presentation on Artificial Intelligence
cuic standard and advanced reporting.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
MYSQL Presentation for SQL database connectivity
Unlocking AI with Model Context Protocol (MCP)
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Modernizing your data center with Dell and AMD
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
Encapsulation_ Review paper, used for researhc scholars
Mobile App Security Testing_ A Comprehensive Guide.pdf
Review of recent advances in non-invasive hemoglobin estimation
NewMind AI Weekly Chronicles - August'25 Week I
NewMind AI Monthly Chronicles - July 2025
Network Security Unit 5.pdf for BCA BBA.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Reach Out and Touch Someone: Haptics and Empathic Computing
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

Docker and plone