net/docker-compose.yml

84 lines
1.9 KiB
YAML

version: '3'
services:
lb:
image: haproxy:latest
ports:
- "80:80"
- "443:443"
volumes:
- "./data/certificates:/certificates"
- "./lb:/usr/local/etc/haproxy"
depends_on:
- "certbot"
- "flask"
- "osmtile"
restart: always
networks:
- internal
labels:
- meta.role=lb
certbot:
image: "certbot/certbot"
hostname: certbot
volumes:
- "./data/certificates:/certificates"
- "./data/certbot/etc:/etc/letsencrypt"
- "./data/certbot/var:/var/lib/letsencrypt"
- "./logs/certbot:/var/log/letsencrypt"
restart: on-failure
networks:
- internal
labels:
- meta.role=certbot
#entrypoint: sh -c 'while true; do sleep 1; done'
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 15d & wait $${!}; done;'"
db:
image: postgres:13-alpine
volumes:
- "./data/db/pgdata:/var/lib/postgresql/data/"
env_file:
- ./.env.prod
restart: always
networks:
- internal
pgadmin:
image: dpage/pgadmin4
#volumes:
# - "./data/dbadmin:/var/lib/pgadmin"
env_file:
- ./.env.prod
restart: always
networks:
- internal
depends_on:
- db
flask:
build:
context: ./flask
dockerfile: Dockerfile.prod
command: gunicorn --bind 0.0.0.0:5000 manage:app
expose:
- 5000
env_file:
- ./.env.prod
networks:
- internal
depends_on:
- db
osmtile:
image: "overv/openstreetmap-tile-server:latest"
hostname: osmtile
environment:
- "DOWNLOAD_PBF=https://download.geofabrik.de/europe/bulgaria-latest.osm.pbf"
- "DOWNLOAD_POLY=https://download.geofabrik.de/europe/bulgaria.poly"
volumes:
- "./data/osmtile/pgdata:/var/lib/postgresql/12/main"
networks:
- internal
#entrypoint: "/run.sh import"
entrypoint: "/run.sh run"
restart: always
networks:
internal: {}