docker: new features regarding persistence
- added db persistence - bugfix init_flagfile, as now its volume is persisted, it really does the configuration step when needed - also added production deployment for the non dpp deployment
This commit is contained in:
parent
aa966b5b93
commit
5a0990f22a
|
@ -29,6 +29,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ${SNAPSHOTS_PATH:-./examples/snapshots}:/mnt/snapshots:ro
|
- ${SNAPSHOTS_PATH:-./examples/snapshots}:/mnt/snapshots:ro
|
||||||
- shared:/shared:rw
|
- shared:/shared:rw
|
||||||
|
- app_id_server:/opt/devicehub:rw
|
||||||
|
|
||||||
postgres-id-server:
|
postgres-id-server:
|
||||||
image: dkr-dsg.ac.upc.edu/ereuse/postgres:dpp__bcb4c696
|
image: dkr-dsg.ac.upc.edu/ereuse/postgres:dpp__bcb4c696
|
||||||
|
@ -74,6 +75,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ${SNAPSHOTS_PATH:-./examples/snapshots}:/mnt/snapshots:ro
|
- ${SNAPSHOTS_PATH:-./examples/snapshots}:/mnt/snapshots:ro
|
||||||
- shared:/shared:ro
|
- shared:/shared:ro
|
||||||
|
- app_id_client:/opt/devicehub:rw
|
||||||
|
|
||||||
postgres-id-client:
|
postgres-id-client:
|
||||||
image: dkr-dsg.ac.upc.edu/ereuse/postgres:dpp__bcb4c696
|
image: dkr-dsg.ac.upc.edu/ereuse/postgres:dpp__bcb4c696
|
||||||
|
@ -97,3 +99,5 @@ services:
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
shared:
|
shared:
|
||||||
|
app_id_client:
|
||||||
|
app_id_server:
|
||||||
|
|
|
@ -19,11 +19,13 @@ services:
|
||||||
- AUTHORIZED_CLIENT_URL=${CLIENT_ID_DEVICEHUB_HOST}
|
- AUTHORIZED_CLIENT_URL=${CLIENT_ID_DEVICEHUB_HOST}
|
||||||
- DPP_MODULE=n
|
- DPP_MODULE=n
|
||||||
- IMPORT_SNAPSHOTS=${IMPORT_SNAPSHOTS}
|
- IMPORT_SNAPSHOTS=${IMPORT_SNAPSHOTS}
|
||||||
|
- DEPLOYMENT=${DEPLOYMENT}
|
||||||
ports:
|
ports:
|
||||||
- 5000:5000
|
- 5000:5000
|
||||||
volumes:
|
volumes:
|
||||||
- ${SNAPSHOTS_PATH:-./examples/snapshots}:/mnt/snapshots:ro
|
- ${SNAPSHOTS_PATH:-./examples/snapshots}:/mnt/snapshots:ro
|
||||||
- shared:/shared:rw
|
- shared:/shared:rw
|
||||||
|
- app:/opt/devicehub:rw
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
image: dkr-dsg.ac.upc.edu/ereuse/postgres:dpp__bcb4c696
|
image: dkr-dsg.ac.upc.edu/ereuse/postgres:dpp__bcb4c696
|
||||||
|
@ -34,15 +36,20 @@ services:
|
||||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||||
- POSTGRES_USER=${DB_USER}
|
- POSTGRES_USER=${DB_USER}
|
||||||
- POSTGRES_DB=${DB_DATABASE}
|
- POSTGRES_DB=${DB_DATABASE}
|
||||||
|
volumes:
|
||||||
|
- pg_data:/var/lib/postgresql/data
|
||||||
# DEBUG
|
# DEBUG
|
||||||
#ports:
|
#ports:
|
||||||
# - 5432:5432
|
# - 5432:5432
|
||||||
# TODO persistence
|
|
||||||
#volumes:
|
|
||||||
# - pg_data:/var/lib/postgresql/data
|
|
||||||
|
|
||||||
# TODO https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/
|
nginx:
|
||||||
#nginx
|
image: nginx
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
||||||
|
volumes:
|
||||||
|
- ./docker/nginx-devicehub.nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
shared:
|
shared:
|
||||||
|
pg_data:
|
||||||
|
app:
|
||||||
|
|
|
@ -172,7 +172,7 @@ config_dpp_part2() {
|
||||||
}
|
}
|
||||||
|
|
||||||
config_phase() {
|
config_phase() {
|
||||||
init_flagfile='/already_configured'
|
init_flagfile='docker__already_configured'
|
||||||
if [ ! -f "${init_flagfile}" ]; then
|
if [ ! -f "${init_flagfile}" ]; then
|
||||||
# 7, 8, 9, 11
|
# 7, 8, 9, 11
|
||||||
init_data
|
init_data
|
||||||
|
@ -211,10 +211,12 @@ main() {
|
||||||
|
|
||||||
# 17. Use gunicorn
|
# 17. Use gunicorn
|
||||||
# thanks https://akira3030.github.io/formacion/articulos/python-flask-gunicorn-docker.html
|
# thanks https://akira3030.github.io/formacion/articulos/python-flask-gunicorn-docker.html
|
||||||
# TODO meanwhile no nginx (step 19), gunicorn cannot serve static files, then we prefer development server
|
if [ "${DEPLOYMENT:-}" = "PROD" ]; then
|
||||||
#gunicorn --access-logfile - --error-logfile - --workers 4 -b :5000 app:app
|
gunicorn --access-logfile - --error-logfile - --workers 4 -b :5000 app:app
|
||||||
# alternative: run development server
|
else
|
||||||
flask run --host=0.0.0.0 --port 5000
|
# run development server
|
||||||
|
FLASK_DEBUG=1 flask run --host=0.0.0.0 --port 5000
|
||||||
|
fi
|
||||||
|
|
||||||
# DEBUG
|
# DEBUG
|
||||||
#sleep infinity
|
#sleep infinity
|
||||||
|
|
32
docker/nginx-devicehub.nginx.conf
Normal file
32
docker/nginx-devicehub.nginx.conf
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
user www-data;
|
||||||
|
worker_processes auto;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
include /etc/nginx/modules-enabled/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
# multi_accept on;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
#upstream socket_backend {
|
||||||
|
# server unix:/socket/gunicorn.sock fail_timeout=0;
|
||||||
|
#}
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
listen [::]:8080;
|
||||||
|
#server_name devicehub.example.org;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
# TODO env var on proxy_pass
|
||||||
|
proxy_pass http://devicehub:5000/;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue