12 FACTOR APP WITH DOCKER
-
Upload
treeptik -
Category
Engineering
-
view
73 -
download
0
Transcript of 12 FACTOR APP WITH DOCKER
![Page 1: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/1.jpg)
12-Factor App with Docker
Ophélie Mauger Consultante DevOps - Alter Way
![Page 2: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/2.jpg)
Why twelve-factor app ?● Maximum portability between environments
● Suitable for deployment on modern cloud platforms
● Scale up
● Minimize time and costs with automation
● Continuous deployment
![Page 3: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/3.jpg)
Why docker can help ?● Maximum portability between environments
● Suitable for deployment on modern cloud platforms
● Scale up
● Minimize time and costs with automation
● Continuous deployment
![Page 4: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/4.jpg)
12 factor App with docker step by step
codebase dependencies config backing services
build, release, runprocesses
port binding concurrency
disposability dev/prod parity Logs
Admin processes
![Page 5: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/5.jpg)
I. CodeBase
One codebase tracked in revision control
![Page 6: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/6.jpg)
II. Dependencies
Explicitly declare & isolate dependencies
![Page 7: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/7.jpg)
|||. Config
Store config in the environment
● Linux environment variables
● docker-compose can define env variables via env files
![Page 8: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/8.jpg)
IV. Backing services
Treat backing services as attached
ressources
● Linux environment variables
● docker-compose can define env variables via env files
● docker allows you to link services together
![Page 9: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/9.jpg)
V. Build, Release, Run
Strictly separate build and run stages
● docker build --pull -t sampleapi:1.0 .
● docker push sampleapi:1.0
● docker run sampleapi:1.0
![Page 10: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/10.jpg)
VI. Processes
Execute the app as one or more stateless
processes
● docker enforces stateless processes
● Use volumes to persist data
![Page 11: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/11.jpg)
Export services via port binding
VII. Port Binding
Docker Host
service network
container http
container php-fpm
container mysql
port binding
![Page 12: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/12.jpg)
VIII. Concurrency
Scale out via the process model
Docker Cluster
docker host docker host docker host
http php
worker worker
worker worker
http php
worker worker
worker worker
http php
worker worker
worker worker
Workload divercity
scale
![Page 13: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/13.jpg)
IX. Disposability
Maximize robustness with fast startup and
graceful shutdown
● Container restart policies
● Orchestration with docker swarm
● Reverse proxy and load balancing with
services containers
![Page 14: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/14.jpg)
X. Dev/Prod parity
Keep development, staging, and
production as similar as possible
● “build once, run anywhere”
● Same app images across DevOps stages
![Page 15: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/15.jpg)
XI. Logs
Treat logs as event streams
Dev environment
Logs in container stdout
>docker logs -f …>docker-compose logs -f
Ops environment
Log driver : fluentd
container fluentd
![Page 16: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/16.jpg)
XII. Admin processes
Run Admin/management tasks as one of
processes
docker exec ….
![Page 17: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/17.jpg)
And what about continuous deployment ?
![Page 18: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/18.jpg)
Continuous Delivery with DockerBuild stage :
● docker build --pull -t myregistry/myimage:$version
● docker push myregistry/myimage:$version
![Page 19: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/19.jpg)
Continuous Deployment with dockerDeploy stage :
● Connect to the swarm (export DOCKER_HOST, ...)
● docker-compose pull
● docker-compose up -d
![Page 20: 12 FACTOR APP WITH DOCKER](https://reader034.fdocuments.us/reader034/viewer/2022052312/586fd8d91a28ab18428b5739/html5/thumbnails/20.jpg)
ConclusionIf you plan to do a twelve-factor app
use docker to make it