├── README.md ├── factor1 ├── Dockerfile ├── app.py ├── docker-compose.yml └── requirements.txt ├── factor10 ├── Dockerfile ├── app.py ├── docker-compose-prod.yml ├── docker-compose.yml └── requirements.txt ├── factor11 ├── Dockerfile ├── app.py ├── docker-compose-prod.yml ├── docker-compose.yml └── requirements.txt ├── factor12 ├── Dockerfile ├── app.py ├── docker-compose-prod.yml ├── docker-compose.yml └── requirements.txt ├── factor2 ├── Dockerfile ├── app.py ├── docker-compose.yml └── requirements.txt ├── factor3 ├── Dockerfile ├── app.py ├── docker-compose.yml └── requirements.txt ├── factor4 ├── Dockerfile ├── app.py ├── docker-compose.yml └── requirements.txt ├── factor5 ├── Dockerfile ├── app.py ├── build.sh ├── docker-compose.yml └── requirements.txt ├── factor6 ├── Dockerfile ├── app.py ├── docker-compose.yml └── requirements.txt ├── factor7 ├── Dockerfile ├── app.py ├── docker-compose-prod.yml ├── docker-compose.yml └── requirements.txt ├── factor8 ├── docker-compose.yml └── web │ ├── Dockerfile │ └── nginx.conf └── factor9 ├── Dockerfile ├── app.py ├── docker-compose-prod.yml ├── docker-compose.yml └── requirements.txt /README.md: -------------------------------------------------------------------------------- 1 | # Repositório de exemplo 2 | -------------------------------------------------------------------------------- /factor1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD requirements.txt requirements.txt 3 | RUN pip install -r requirements.txt 4 | ADD . /code 5 | WORKDIR /code 6 | CMD python app.py 7 | -------------------------------------------------------------------------------- /factor1/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | app = Flask(__name__) 4 | redis = Redis(host='redis', port=6379) 5 | @app.route('/') 6 | def hello(): 7 | redis.incr('hits') 8 | return 'Hello World! %s times.' % redis.get('hits') 9 | if __name__ == "__main__": 10 | app.run(host="0.0.0.0", debug=True) 11 | -------------------------------------------------------------------------------- /factor1/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | web: 4 | build: . 5 | ports: 6 | - "5000:5000" 7 | volumes: 8 | - .:/code 9 | labels: 10 | - 'app.environment=${ENV_APP}' 11 | redis: 12 | image: redis:3.2.1 13 | volumes: 14 | - dados_${ENV_APP}:/data 15 | labels: 16 | - 'app.environment=${ENV_APP}' 17 | -------------------------------------------------------------------------------- /factor1/requirements.txt: -------------------------------------------------------------------------------- 1 | flask==0.11.1 2 | redis==2.10.5 3 | -------------------------------------------------------------------------------- /factor10/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD . /code 3 | WORKDIR /code 4 | RUN pip install -r requirements.txt 5 | CMD python app.py 6 | EXPOSE 5000 7 | -------------------------------------------------------------------------------- /factor10/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | from multiprocessing import Process 4 | import signal, os 5 | 6 | host_redis=os.environ.get('HOST_REDIS', 'redis') 7 | port_redis=os.environ.get('PORT_REDIS', '6379') 8 | 9 | app = Flask(__name__) 10 | redis = Redis(host=host_redis, port=port_redis) 11 | 12 | @app.route('/') 13 | def hello(): 14 | redis.incr('hits') 15 | return 'Hello World! %s times.' % redis.get('hits') 16 | 17 | if __name__ == "__main__": 18 | def handler(signum, frame): 19 | print 'Signal handler called with signal', signum 20 | server.terminate() 21 | server.join() 22 | 23 | signal.signal(signal.SIGTERM, handler) 24 | 25 | def run_server(): 26 | app.run(host="0.0.0.0", debug=True) 27 | 28 | server = Process(target=run_server) 29 | server.start() 30 | -------------------------------------------------------------------------------- /factor10/docker-compose-prod.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | links: 11 | - redis 12 | environment: 13 | - PORT_REDIS=6379 14 | - HOST_REDIS=redis 15 | - VIRTUAL_HOST=teste.docker 16 | labels: 17 | - 'app.environment=${ENV_APP}' 18 | redis: 19 | image: redis 20 | volumes: 21 | - dados_${ENV_APP}:/data 22 | labels: 23 | - 'app.environment=${ENV_APP}' 24 | -------------------------------------------------------------------------------- /factor10/docker-compose.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | volumes: 11 | - .:/code 12 | links: 13 | - redis 14 | environment: 15 | - PORT_REDIS=6379 16 | - HOST_REDIS=redis 17 | - VIRTUAL_HOST=teste.docker 18 | labels: 19 | - 'app.environment=${ENV_APP}' 20 | redis: 21 | image: redis 22 | volumes: 23 | - dados_${ENV_APP}:/data 24 | labels: 25 | - 'app.environment=${ENV_APP}' 26 | -------------------------------------------------------------------------------- /factor10/requirements.txt: -------------------------------------------------------------------------------- 1 | flask 2 | redis 3 | -------------------------------------------------------------------------------- /factor11/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD . /code 3 | WORKDIR /code 4 | RUN pip install -r requirements.txt 5 | CMD python app.py 6 | EXPOSE 5000 7 | -------------------------------------------------------------------------------- /factor11/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | from multiprocessing import Process 4 | import signal, os 5 | 6 | host_redis=os.environ.get('HOST_REDIS', 'redis') 7 | port_redis=os.environ.get('PORT_REDIS', '6379') 8 | 9 | app = Flask(__name__) 10 | redis = Redis(host=host_redis, port=port_redis) 11 | 12 | @app.route('/') 13 | def hello(): 14 | redis.incr('hits') 15 | return 'Hello World! %s times.' % redis.get('hits') 16 | 17 | if __name__ == "__main__": 18 | def handler(signum, frame): 19 | print 'Signal handler called with signal', signum 20 | server.terminate() 21 | server.join() 22 | 23 | signal.signal(signal.SIGTERM, handler) 24 | 25 | def run_server(): 26 | app.run(host="0.0.0.0", debug=True) 27 | 28 | server = Process(target=run_server) 29 | server.start() 30 | -------------------------------------------------------------------------------- /factor11/docker-compose-prod.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | links: 11 | - redis 12 | environment: 13 | - PORT_REDIS=6379 14 | - HOST_REDIS=redis 15 | - VIRTUAL_HOST=teste.docker 16 | labels: 17 | - 'app.environment=${ENV_APP}' 18 | redis: 19 | image: redis 20 | volumes: 21 | - dados_${ENV_APP}:/data 22 | labels: 23 | - 'app.environment=${ENV_APP}' 24 | -------------------------------------------------------------------------------- /factor11/docker-compose.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | volumes: 11 | - .:/code 12 | links: 13 | - redis 14 | environment: 15 | - PORT_REDIS=6379 16 | - HOST_REDIS=redis 17 | - VIRTUAL_HOST=teste.docker 18 | labels: 19 | - 'app.environment=${ENV_APP}' 20 | redis: 21 | image: redis 22 | volumes: 23 | - dados_${ENV_APP}:/data 24 | labels: 25 | - 'app.environment=${ENV_APP}' 26 | -------------------------------------------------------------------------------- /factor11/requirements.txt: -------------------------------------------------------------------------------- 1 | flask 2 | redis 3 | -------------------------------------------------------------------------------- /factor12/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD . /code 3 | WORKDIR /code 4 | RUN pip install -r requirements.txt 5 | CMD python app.py 6 | EXPOSE 5000 7 | -------------------------------------------------------------------------------- /factor12/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | from multiprocessing import Process 4 | import signal, os 5 | 6 | host_redis=os.environ.get('HOST_REDIS', 'redis') 7 | port_redis=os.environ.get('PORT_REDIS', '6379') 8 | 9 | app = Flask(__name__) 10 | redis = Redis(host=host_redis, port=port_redis) 11 | 12 | @app.route('/') 13 | def hello(): 14 | redis.incr('hits') 15 | return 'Hello World! %s times.' % redis.get('hits') 16 | 17 | if __name__ == "__main__": 18 | def handler(signum, frame): 19 | print 'Signal handler called with signal', signum 20 | server.terminate() 21 | server.join() 22 | 23 | signal.signal(signal.SIGTERM, handler) 24 | 25 | def run_server(): 26 | app.run(host="0.0.0.0", debug=True) 27 | 28 | server = Process(target=run_server) 29 | server.start() 30 | -------------------------------------------------------------------------------- /factor12/docker-compose-prod.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | links: 11 | - redis 12 | environment: 13 | - PORT_REDIS=6379 14 | - HOST_REDIS=redis 15 | - VIRTUAL_HOST=teste.docker 16 | labels: 17 | - 'app.environment=${ENV_APP}' 18 | redis: 19 | image: redis 20 | volumes: 21 | - dados_${ENV_APP}:/data 22 | labels: 23 | - 'app.environment=${ENV_APP}' 24 | -------------------------------------------------------------------------------- /factor12/docker-compose.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | volumes: 11 | - .:/code 12 | links: 13 | - redis 14 | environment: 15 | - PORT_REDIS=6379 16 | - HOST_REDIS=redis 17 | - VIRTUAL_HOST=teste.docker 18 | labels: 19 | - 'app.environment=${ENV_APP}' 20 | redis: 21 | image: redis 22 | volumes: 23 | - dados_${ENV_APP}:/data 24 | labels: 25 | - 'app.environment=${ENV_APP}' 26 | -------------------------------------------------------------------------------- /factor12/requirements.txt: -------------------------------------------------------------------------------- 1 | flask 2 | redis 3 | -------------------------------------------------------------------------------- /factor2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD requirements.txt requirements.txt 3 | RUN pip install -r requirements.txt 4 | ADD . /code 5 | WORKDIR /code 6 | CMD python app.py 7 | -------------------------------------------------------------------------------- /factor2/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | app = Flask(__name__) 4 | redis = Redis(host='redis', port=6379) 5 | @app.route('/') 6 | def hello(): 7 | redis.incr('hits') 8 | return 'Hello World! %s times.' % redis.get('hits') 9 | if __name__ == "__main__": 10 | app.run(host="0.0.0.0", debug=True) 11 | -------------------------------------------------------------------------------- /factor2/docker-compose.yml: -------------------------------------------------------------------------------- 1 | web: 2 | build: . 3 | ports: 4 | - "5000:5000" 5 | volumes: 6 | - .:/code 7 | links: 8 | - redis 9 | labels: 10 | - 'app.environment=${ENV_APP}' 11 | redis: 12 | image: redis 13 | volumes: 14 | - dados_${ENV_APP}:/data 15 | labels: 16 | - 'app.environment=${ENV_APP}' 17 | -------------------------------------------------------------------------------- /factor2/requirements.txt: -------------------------------------------------------------------------------- 1 | flask==0.11.1 2 | redis==2.10.5 3 | -------------------------------------------------------------------------------- /factor3/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD requirements.txt requirements.txt 3 | RUN pip install -r requirements.txt 4 | ADD . /code 5 | WORKDIR /code 6 | CMD python app.py 7 | -------------------------------------------------------------------------------- /factor3/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | import os 4 | host_run=os.environ.get('HOST_RUN', '0.0.0.0') 5 | debug=os.environ.get('DEBUG', 'True') 6 | app = Flask(__name__) 7 | redis = Redis(host='redis', port=6379) 8 | @app.route('/') 9 | def hello(): 10 | redis.incr('hits') 11 | return 'Hello World! %s times.' % redis.get('hits') 12 | if __name__ == "__main__": 13 | app.run(host=host_run, debug=True) 14 | -------------------------------------------------------------------------------- /factor3/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | web: 4 | build: . 5 | ports: 6 | - "5000:5000" 7 | volumes: 8 | - .:/code 9 | labels: 10 | - 'app.environment=${ENV_APP}' 11 | environment: 12 | - HOST_RUN=${HOST_RUN} 13 | - DEBUG=${DEBUG} 14 | redis: 15 | image: redis:3.2.1 16 | volumes: 17 | - dados:/data 18 | labels: 19 | - 'app.environment=${ENV_APP}' 20 | volumes: 21 | dados: 22 | external: false 23 | -------------------------------------------------------------------------------- /factor3/requirements.txt: -------------------------------------------------------------------------------- 1 | flask==0.11.1 2 | redis==2.10.5 3 | -------------------------------------------------------------------------------- /factor4/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD requirements.txt requirements.txt 3 | RUN pip install -r requirements.txt 4 | ADD . /code 5 | WORKDIR /code 6 | CMD python app.py 7 | -------------------------------------------------------------------------------- /factor4/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | import os 4 | host_run=os.environ.get('HOST_RUN', '0.0.0.0') 5 | debug=os.environ.get('DEBUG', 'True') 6 | host_redis=os.environ.get('HOST_REDIS', 'redis') 7 | port_redis=os.environ.get('PORT_REDIS', '6379') 8 | app = Flask(__name__) 9 | redis = Redis(host='redis', port=6379) 10 | @app.route('/') 11 | def hello(): 12 | redis.incr('hits') 13 | return 'Hello World! %s times.' % redis.get('hits') 14 | if __name__ == "__main__": 15 | app.run(host=host_run, debug=True) 16 | -------------------------------------------------------------------------------- /factor4/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | web: 4 | build: . 5 | ports: 6 | - "5000:5000" 7 | volumes: 8 | - .:/code 9 | labels: 10 | - 'app.environment=${ENV_APP}' 11 | environment: 12 | - HOST_RUN=${HOST_RUN} 13 | - DEBUG=${DEBUG} 14 | - PORT_REDIS=6379 15 | - HOST_REDIS=redis 16 | redis: 17 | image: redis:3.2.1 18 | volumes: 19 | - dados:/data 20 | labels: 21 | - 'app.environment=${ENV_APP}' 22 | volumes: 23 | dados: 24 | external: false 25 | -------------------------------------------------------------------------------- /factor4/requirements.txt: -------------------------------------------------------------------------------- 1 | flask==0.11.1 2 | redis==2.10.5 3 | -------------------------------------------------------------------------------- /factor5/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD requirements.txt requirements.txt 3 | RUN pip install -r requirements.txt 4 | ADD . /code 5 | WORKDIR /code 6 | CMD python app.py 7 | -------------------------------------------------------------------------------- /factor5/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | import os 4 | host_redis=os.environ.get('HOST_REDIS', 'redis') 5 | port_redis=os.environ.get('PORT_REDIS', '6379') 6 | 7 | app = Flask(__name__) 8 | redis = Redis(host=host_redis, port=port_redis) 9 | 10 | @app.route('/') 11 | def hello(): 12 | redis.incr('hits') 13 | return 'Hello World! %s times.' % redis.get('hits') 14 | if __name__ == "__main__": 15 | app.run(host="0.0.0.0", debug=True) 16 | -------------------------------------------------------------------------------- /factor5/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | USER="gomex" 4 | TIMESTAMP=$(date "+%Y.%m.%d-%H.%M") 5 | 6 | echo "Construindo a imagem ${USER}/app:${TIMESTAMP}" 7 | docker build -t ${USER}/app:${TIMESTAMP} . 8 | 9 | echo "Marcando a tag latest também" 10 | docker tag ${USER}/app:${TIMESTAMP} ${USER}/app:latest 11 | 12 | echo "Enviando a imagem para nuvem docker" 13 | docker push ${USER}/app:${TIMESTAMP} 14 | docker push ${USER}/app:latest 15 | 16 | export TIMESTAMP 17 | -------------------------------------------------------------------------------- /factor5/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | web: 4 | image: gomex/app:latest 5 | ports: 6 | - "5000:5000" 7 | volumes: 8 | - .:/code 9 | labels: 10 | - 'app.environment=${ENV_APP}' 11 | environment: 12 | - HOST_RUN=${HOST_RUN} 13 | - DEBUG=${DEBUG} 14 | - PORT_REDIS=6379 15 | - HOST_REDIS=redis 16 | redis: 17 | image: redis:3.2.1 18 | volumes: 19 | - dados:/data 20 | labels: 21 | - 'app.environment=${ENV_APP}' 22 | volumes: 23 | dados: 24 | external: false 25 | -------------------------------------------------------------------------------- /factor5/requirements.txt: -------------------------------------------------------------------------------- 1 | flask==0.11.1 2 | redis==2.10.5 3 | -------------------------------------------------------------------------------- /factor6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD requirements.txt requirements.txt 3 | RUN pip install -r requirements.txt 4 | ADD . /code 5 | WORKDIR /code 6 | CMD python app.py 7 | -------------------------------------------------------------------------------- /factor6/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | import os 4 | host_redis=os.environ.get('HOST_REDIS', 'redis') 5 | port_redis=os.environ.get('PORT_REDIS', '6379') 6 | 7 | app = Flask(__name__) 8 | redis = Redis(host=host_redis, port=port_redis) 9 | 10 | @app.route('/') 11 | def hello(): 12 | redis.incr('hits') 13 | return 'Hello World! %s times.' % redis.get('hits') 14 | if __name__ == "__main__": 15 | app.run(host="0.0.0.0", debug=True) 16 | -------------------------------------------------------------------------------- /factor6/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | web: 4 | image: gomex/app:latest 5 | ports: 6 | - "5000:5000" 7 | volumes: 8 | - .:/code 9 | labels: 10 | - 'app.environment=${ENV_APP}' 11 | environment: 12 | - HOST_RUN=${HOST_RUN} 13 | - DEBUG=${DEBUG} 14 | - PORT_REDIS=6379 15 | - HOST_REDIS=redis 16 | redis: 17 | image: redis:3.2.1 18 | volumes: 19 | - dados:/data 20 | labels: 21 | - 'app.environment=${ENV_APP}' 22 | volumes: 23 | dados: 24 | external: false 25 | -------------------------------------------------------------------------------- /factor6/requirements.txt: -------------------------------------------------------------------------------- 1 | flask==0.11.1 2 | redis==2.10.5 3 | -------------------------------------------------------------------------------- /factor7/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD . /code 3 | WORKDIR /code 4 | RUN pip install -r requirements.txt 5 | CMD python app.py 6 | EXPOSE 5000 7 | -------------------------------------------------------------------------------- /factor7/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | import os 4 | host_redis=os.environ.get('HOST_REDIS', 'redis') 5 | port_redis=os.environ.get('PORT_REDIS', '6379') 6 | 7 | app = Flask(__name__) 8 | redis = Redis(host=host_redis, port=port_redis) 9 | 10 | @app.route('/') 11 | def hello(): 12 | redis.incr('hits') 13 | return 'Hello World! %s times.' % redis.get('hits') 14 | if __name__ == "__main__": 15 | app.run(host="0.0.0.0", debug=True) 16 | -------------------------------------------------------------------------------- /factor7/docker-compose-prod.yml: -------------------------------------------------------------------------------- 1 | web: 2 | build: . 3 | ports: 4 | - "5000:5000" 5 | links: 6 | - redis 7 | environment: 8 | - PORT_REDIS=6379 9 | - HOST_REDIS=redis 10 | labels: 11 | - 'app.environment=${ENV_APP}' 12 | redis: 13 | image: redis 14 | volumes: 15 | - dados_${ENV_APP}:/data 16 | labels: 17 | - 'app.environment=${ENV_APP}' 18 | -------------------------------------------------------------------------------- /factor7/docker-compose.yml: -------------------------------------------------------------------------------- 1 | web: 2 | build: . 3 | ports: 4 | - "5000:5000" 5 | volumes: 6 | - .:/code 7 | links: 8 | - redis 9 | environment: 10 | - PORT_REDIS=6379 11 | - HOST_REDIS=redis 12 | labels: 13 | - 'app.environment=${ENV_APP}' 14 | redis: 15 | image: redis 16 | volumes: 17 | - dados_${ENV_APP}:/data 18 | labels: 19 | - 'app.environment=${ENV_APP}' 20 | -------------------------------------------------------------------------------- /factor7/requirements.txt: -------------------------------------------------------------------------------- 1 | flask 2 | redis 3 | -------------------------------------------------------------------------------- /factor8/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | 3 | 4 | services: 5 | lb: 6 | container_name: lb 7 | build: lb 8 | restart: unless-stopped 9 | networks: 10 | - backend 11 | ports: 12 | - "80:80" 13 | 14 | # app 15 | app: 16 | image: tutum/hello-world 17 | restart: unless-stopped 18 | networks: 19 | backend: 20 | aliases: 21 | - apps 22 | expose: 23 | - 80 24 | depends_on: 25 | - lb 26 | 27 | networks: 28 | backend: 29 | driver: bridge 30 | -------------------------------------------------------------------------------- /factor8/web/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:1.9 2 | 3 | # forward request and error logs to docker log collector 4 | RUN ln -sf /dev/stdout /var/log/nginx/access.log 5 | RUN ln -sf /dev/stderr /var/log/nginx/error.log 6 | 7 | COPY nginx.conf /etc/nginx/nginx.conf 8 | 9 | EXPOSE 80 10 | 11 | CMD ["nginx", "-g", "daemon off;"] 12 | -------------------------------------------------------------------------------- /factor8/web/nginx.conf: -------------------------------------------------------------------------------- 1 | user nginx; 2 | worker_processes 2; 3 | 4 | events { 5 | worker_connections 1024; 6 | } 7 | 8 | http { 9 | access_log /var/log/nginx/access.log; 10 | error_log /var/log/nginx/error.log; 11 | 12 | # 127.0.0.11 is the address of the Docker embedded DNS server https://docs.docker.com/engine/userguide/networking/dockernetworks/#docker-embedded-dns-server 13 | # set valid low to avoid caching IP addresses and demonstrate DNS round robin of the apps alias 14 | resolver 127.0.0.11 valid=1s; 15 | 16 | server { 17 | listen 80; 18 | # apps is the name of the network alias in Docker 19 | set $alias "apps"; 20 | 21 | location / { 22 | proxy_pass http://$alias; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /factor9/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7 2 | ADD . /code 3 | WORKDIR /code 4 | RUN pip install -r requirements.txt 5 | CMD python app.py 6 | EXPOSE 5000 7 | -------------------------------------------------------------------------------- /factor9/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from redis import Redis 3 | from multiprocessing import Process 4 | import signal, os 5 | 6 | host_redis=os.environ.get('HOST_REDIS', 'redis') 7 | port_redis=os.environ.get('PORT_REDIS', '6379') 8 | 9 | app = Flask(__name__) 10 | redis = Redis(host=host_redis, port=port_redis) 11 | 12 | @app.route('/') 13 | def hello(): 14 | redis.incr('hits') 15 | return 'Hello World! %s times.' % redis.get('hits') 16 | 17 | if __name__ == "__main__": 18 | def handler(signum, frame): 19 | print 'Signal handler called with signal', signum 20 | server.terminate() 21 | server.join() 22 | 23 | signal.signal(signal.SIGTERM, handler) 24 | 25 | def run_server(): 26 | app.run(host="0.0.0.0", debug=True) 27 | 28 | server = Process(target=run_server) 29 | server.start() 30 | -------------------------------------------------------------------------------- /factor9/docker-compose-prod.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | links: 11 | - redis 12 | environment: 13 | - PORT_REDIS=6379 14 | - HOST_REDIS=redis 15 | - VIRTUAL_HOST=teste.docker 16 | labels: 17 | - 'app.environment=${ENV_APP}' 18 | redis: 19 | image: redis 20 | volumes: 21 | - dados_${ENV_APP}:/data 22 | labels: 23 | - 'app.environment=${ENV_APP}' 24 | -------------------------------------------------------------------------------- /factor9/docker-compose.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: jwilder/nginx-proxy 3 | volumes: 4 | - /var/run/docker.sock:/tmp/docker.sock:ro 5 | ports: 6 | - "80:80" 7 | 8 | backend: 9 | build: . 10 | volumes: 11 | - .:/code 12 | links: 13 | - redis 14 | environment: 15 | - PORT_REDIS=6379 16 | - HOST_REDIS=redis 17 | - VIRTUAL_HOST=teste.docker 18 | labels: 19 | - 'app.environment=${ENV_APP}' 20 | redis: 21 | image: redis 22 | volumes: 23 | - dados_${ENV_APP}:/data 24 | labels: 25 | - 'app.environment=${ENV_APP}' 26 | -------------------------------------------------------------------------------- /factor9/requirements.txt: -------------------------------------------------------------------------------- 1 | flask 2 | redis 3 | --------------------------------------------------------------------------------