Upload
michal-kurzeja
View
460
Download
0
Embed Size (px)
Citation preview
DOCKER - INTRODUCTION FOR PHP DEVELOPERS
MICHAŁ KURZEJA
▸ CTO at accesto.com
▸ @michalKurzeja
▸ Homebrewer
▸ Swimmer/runner
DOCKER - INTRODUCTION FOR PHP DEVELOPERS
PROJECT DEPENDENCY MATRIX FROM HELL
Dev Stage Prod CI
PHP ? ? ? ?
MySQL ? ? ? ?
Redis ? ? ? ?RabbitMQ ? ? ? ?Neo4j ? ? ? ?
Hadoop/Spark ? ? ? ?
DOCKER - INTRODUCTION FOR PHP DEVELOPERS
PROJECT DEPENDENCY MATRIX FROM HELL
Dev Stage Prod CI
PHP ? ?
MySQL ? ? ?
Redis ? ? ? ?RabbitMQ ? ? ? ?Neo4j ? ? ? ?
Hadoop/Spark ? ? ? ?
FROM docker/whalesay:latestRUN apt-get -y update && apt-get install -y fortunesCMD /usr/games/fortune -a | cowsay
Dockerfile
FROM docker/whalesay:latestRUN apt-get -y update && apt-get install -y fortunesCMD /usr/games/fortune -a | cowsay
docker build -t docker-whale .
Dockerfile
FROM docker/whalesay:latestRUN apt-get -y update && apt-get install -y fortunesCMD /usr/games/fortune -a | cowsay
docker build -t docker-whale .
Dockerfile
FROM docker/whalesay:latestRUN apt-get -y update && apt-get install -y fortunesCMD /usr/games/fortune -a | cowsay
docker build -t docker-whale .docker run docker-whale
Dockerfile
#docker-compose.yml
www: image: php:7.0-apache
docker run -v $PWD/www:/var/www/html -p 8081:80 php:7.0-apache
#docker-compose.yml
www: image: php:7.0-apache volumes: - ./www:/var/www/html
docker run -v $PWD/www:/var/www/html -p 8081:80 php:7.0-apache
#docker-compose.yml
www: image: php:7.0-apache volumes: - ./www:/var/www/html ports: - 8081:80
docker run -v $PWD/www:/var/www/html -p 8081:80 php:7.0-apache
#docker-compose.yml
www: image: php:7.0-apache volumes: - ./www:/var/www/html ports: - 8081:80
docker-compose up
www: image: php:7.0-apache volumes: - ./www:/var/www/html ports: - 8081:80 links: - redis redis: image: redis
<?php
/* www/index.php */
require_once __DIR__.'/vendor/autoload.php';
$client = new Predis\Client(['host' => 'redis']);
$counter = $client->incr('counter');
echo "Hostname: ".gethostname().PHP_EOL;
echo " Counter: ".$counter.PHP_EOL;
version: '2'services: www: image: php:7.0-apache volumes: - ./www:/var/www/html ports: - 8081:80 links: - redis redis: image: redis
version: '2'services: www: … haproxy: image: 'dockercloud/haproxy:latest' links: - www ports: - '80:80' redis: …
version: '2'services: www: … haproxy: image: 'dockercloud/haproxy:latest' links: - www ports: - '80:80' environment: - DOCKER_TLS_VERIFY - DOCKER_HOST - DOCKER_CERT_PATH volumes: - $DOCKER_CERT_PATH:$DOCKER_CERT_PATH redis: …
DOCKER
PACKAGING OWN APPLICATIONS
▸ Use Dockerfile
▸ COPY project code
▸ Orchestrate [with compose]
▸ Split into multiple containers
DOCKER
DEPLOYMENT TIPS&TRICKS
▸ Own in-house docker repository
▸ No direct disk usage
▸ Gaufrette - filesystem abstraction
▸ Logstash - logs
▸ Session in redis/memcached