84 lines
2.2 KiB
YAML
84 lines
2.2 KiB
YAML
services:
|
|
postgres-db:
|
|
image: kartoza/postgis:12.0
|
|
ports:
|
|
- 5432:5432
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql
|
|
- ./custom-postgresql.conf:/etc/postgresql/12/main/postgresql.conf
|
|
- ./rogaining.sql:/sql/rogaining.sql
|
|
- ./sqls:/sqls
|
|
- ./create_location2025_table.sql:/sql/create_location2025_table.sql
|
|
environment:
|
|
- POSTGRES_USER=${POSTGRES_USER}
|
|
- POSTGRES_PASS=${POSTGRES_PASS}
|
|
- POSTGRES_DBNAME=${POSTGRES_DBNAME}
|
|
- POSTGRES_MAX_CONNECTIONS=600
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 2G
|
|
reservations:
|
|
memory: 1G
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DBNAME}"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 30s
|
|
restart: "on-failure"
|
|
networks:
|
|
- rog-api
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.gdal
|
|
command: bash -c "./wait-for-postgres.sh postgres-db && gunicorn config.wsgi:application --bind 0.0.0.0:8000"
|
|
volumes:
|
|
- .:/app
|
|
- static_volume:/app/static
|
|
- media_volume:/app/media
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- MPLBACKEND=Agg
|
|
- MATPLOTLIB_BACKEND=Agg
|
|
- PYTHONWARNINGS=ignore
|
|
- GDAL_DISABLE_READDIR_ON_OPEN=YES
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8000')\" || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: "on-failure"
|
|
depends_on:
|
|
postgres-db:
|
|
condition: service_healthy
|
|
networks:
|
|
- rog-api
|
|
|
|
nginx:
|
|
image: nginx:1.19
|
|
volumes:
|
|
- ./nginx.conf:/etc/nginx/nginx.conf
|
|
- static_volume:/app/static
|
|
- media_volume:/app/media
|
|
- ./supervisor/html:/usr/share/nginx/html
|
|
ports:
|
|
- 8100:80
|
|
depends_on:
|
|
- app
|
|
networks:
|
|
- rog-api
|
|
|
|
networks:
|
|
rog-api:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
postgres_data:
|
|
static_volume:
|
|
media_volume:
|