PHP UserGroup Hamburg - 2016-02-09 - Dockerizing PHP Applications
Following some notes about my the last php usergroup meetup.
- docker is not one tool but a whole ecosystem
- machine (provisioning)
- swarm (clustering and container scheduling)
- compose (multi container application)
- registry (image distribution)
- engine (the container)
- ktematic (gui)
- pretty small compared to virtual box/full virtual machines
- updating means, building a new container
- theoretically, you can use all the images from the hub
- always ask yourself if you want to use them in production
- are they maintained
- how secure are they
- always ask yourself if you want to use them in production
- docker compose
- builds and pulls images
- runs containers
- enables networking between containers
- aggregates STDOUT and STDERR output
example Dockerfile
FROM php:7.0.2-fpm
RUN docker-php-ext-install pdo pdo_mysql
COPY php/php.ini /usr/local/etc/php/
# copy the content of the source code into the image
# you can ship this code version now
COPY . /srv/meetup-service
# the date in the container is not persistent
# if ypu change something in it, it will bill lost afterwards
CMD ["php-fpm"]
example docker-compose.yml
webserver:
build: ./nginx #path to the docker file and configuration etc
links:
- application
ports:
- "80:80" #from port 80 to port 80
volumes_from:
- application
application:
build: ./meetup-service #your project
links:
- database
ports:
- "9000:9000"
volumes:
- ./meetup-service:/srv/meetup-service #mounting local source code into the container
environment:
- MYSQL_HOST=database
- MYSQL_DATABASE=application
- MYSQL_USER=root
- MYSQL_PASSWORD=parola
database:
image: mysql:5.7 #no build path, instead an image is used
volumes:
- /var/lib/mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=docker
- MYSQL_DATABASE=app
Trackbacks
The author does not allow comments to this entry
Comments
Display comments as Linear | Threaded