Added secrets and health checks
parent
52459a009c
commit
b216aab7aa
@ -0,0 +1,18 @@
|
||||
# Create a test NFS volume
|
||||
# make sure the permissions on the NFS volume don't map to a user that can't access them
|
||||
docker volume create --driver local --opt type=nfs --opt o=addr=nas1.androiddrew.com,rw --opt device=:/volume1/expanse nfs-test
|
||||
|
||||
docker run --name test-postgres -v nfs-test:/var/lib/postgresql/data -d postgres:10.4-alpine
|
||||
|
||||
|
||||
# Build a docker machine and push it to the docker hub
|
||||
|
||||
## First set the docker env back to the local Host
|
||||
|
||||
eval $(docker-machine env -u)
|
||||
|
||||
## build with the tag using the docker file and the path
|
||||
|
||||
docker build -t androiddrew/flask-docker-swarm_web:latest -f ./services/web/Dockerfile ./services/web
|
||||
|
||||
docker push androiddrew/flask-docker-swarm_web:latest
|
@ -0,0 +1,105 @@
|
||||
# Image: Instead of referencing the local build directory, we are now using an image to set the context
|
||||
# Deploy: We added a deploy keyword to configure the number of replicas, restart_policy, and placement contstraints for each service
|
||||
# REFERENCE: https://docs.docker.com/compose/compose-file/
|
||||
|
||||
version: '3.6'
|
||||
|
||||
services:
|
||||
|
||||
web:
|
||||
image: androiddrew/flask-docker-swarm_web:latest
|
||||
deploy:
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
placement:
|
||||
constraints: [node.role == worker]
|
||||
expose:
|
||||
- 5000
|
||||
environment:
|
||||
- FLASK_ENV=production
|
||||
- APP_SETTINGS=project.config.ProductionConfig
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
# - SECRET_CODE=myprecious
|
||||
# here we are going to use docker secrets to keep everything safe
|
||||
#see the secrets section below
|
||||
secrets:
|
||||
- secret_code
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- app
|
||||
# We can add a health check to either a conmpose file or Dockerfile https://docs.docker.com/engine/reference/builder/#healthcheck
|
||||
healthcheck:
|
||||
# Test is the actual command that will be run to check the health status
|
||||
# It should return 0 (Healthy) or 1 (Unhealthy)
|
||||
test: curl --fail http://localhost:5000/ping || exit 1
|
||||
interval: 10s
|
||||
timeout: 2s
|
||||
retries: 5
|
||||
|
||||
db:
|
||||
image: androiddrew/flask-docker-swarm_db:latest
|
||||
deploy:
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
placement:
|
||||
#constraints: [node.role == manager]
|
||||
constraints: [node.role == worker]
|
||||
volumes:
|
||||
- data-volume:/var/lib/postgresql/data
|
||||
expose:
|
||||
- 5432
|
||||
environment:
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_PASSWORD=postgres
|
||||
networks:
|
||||
- app
|
||||
|
||||
nginx:
|
||||
image: androiddrew/flask-docker-swarm_nginx:latest
|
||||
deploy:
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
placement:
|
||||
constraints: [node.role == worker]
|
||||
ports:
|
||||
- 80:80
|
||||
depends_on:
|
||||
- web
|
||||
networks:
|
||||
- app
|
||||
|
||||
visualizer:
|
||||
image: dockersamples/visualizer:latest
|
||||
ports:
|
||||
- 8080:8080
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
deploy:
|
||||
placement:
|
||||
constraints: [node.role == manager]
|
||||
networks:
|
||||
- app
|
||||
|
||||
# We are now using an overlay network to connect multiple Docker engines across each host and enable communication between Swarm services
|
||||
networks:
|
||||
app:
|
||||
driver: overlay
|
||||
|
||||
volumes:
|
||||
#data-volume:
|
||||
# driver: local
|
||||
data-volume:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=nas1.androiddrew.com,rw
|
||||
device: ":/volume1/expanse/flask_data"
|
||||
# Secrets can be configured in either external or file-based manner
|
||||
secrets:
|
||||
secret_code:
|
||||
external: true
|
Loading…
Reference in New Issue