version: '3.3' services: nginx-proxy: image: nginxproxy/nginx-proxy container_name: nginx-proxy ports: - 80:80 - 443:443 volumes: - ./volume/nginx-proxy/certs:/etc/nginx/certs - ./volume/nginx-proxy/vhost:/etc/nginx/vhost.d - ./volume/nginx-proxy/html:/usr/share/nginx/html - /var/run/docker.sock:/tmp/docker.sock:ro networks: - front - tubearchivist_network - umami_network - gitea_network nginx-proxy-acme: image: nginxproxy/acme-companion container_name: nginx-proxy-acme volumes: - ./volume/nginx-proxy/certs:/etc/nginx/certs - ./volume/nginx-proxy/vhost:/etc/nginx/vhost.d - ./volume/nginx-proxy/html:/usr/share/nginx/html - ./volume/nginx-proxy/acme:/etc/acme.sh - /var/run/docker.sock:/var/run/docker.sock:ro environment: - NGINX_PROXY_CONTAINER=nginx-proxy networks: - front # main flask site nginx: build: ./tubearchivist/nginx container_name: backend_nginx restart: always expose: - "8000" depends_on: - tubearchivist environment: - VIRTUAL_HOST=tubearchivist.com,www.tubearchivist.com - LETSENCRYPT_HOST=tubearchivist.com,www.tubearchivist.com networks: - tubearchivist_network tubearchivist: container_name: tubearchivist build: ./tubearchivist/web restart: always volumes: - ./volume/tubearchivist/data:/data env_file: - ./env/tubearchivist.env expose: - "8080" networks: - tubearchivist_network # backend postgres postgres: image: postgres:14 container_name: postgres restart: always volumes: - ./volume/postgres:/var/lib/postgresql/data/ env_file: - ./env/postgres.env expose: - "5432" networks: - tubearchivist_network redis: image: redislabs/rejson:latest container_name: redis restart: always ports: - "127.0.0.1:6379:6379" volumes: - ./volume/redis:/data networks: - tubearchivist_network # umami stats umami: image: ghcr.io/mikecao/umami:postgresql-latest container_name: umami expose: - "3000" env_file: - ./env/umami.env environment: - VIRTUAL_HOST=www.stats.tubearchivist.com,stats.tubearchivist.com - LETSENCRYPT_HOST=www.stats.tubearchivist.com,stats.tubearchivist.com depends_on: - umami-db restart: always networks: - umami_network umami-db: image: postgres:14 container_name: umami-db env_file: - ./env/umami.env volumes: - ./volume/umami/db:/var/lib/postgresql/data restart: always networks: - umami_network # gitea gitea: image: gitea/gitea container_name: gitea hostname: gitea env_file: - ./env/gitea.env environment: - VIRTUAL_HOST=git.tubearchivist.com,www.git.tubearchivist.com - LETSENCRYPT_HOST=git.tubearchivist.com,www.git.tubearchivist.com restart: always volumes: - ./volume/gitea/data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro expose: - "3000" ports: - '127.0.0.1:22:22' networks: - gitea_network gitea-db: image: postgres:14 container_name: gitea-db restart: always env_file: - ./env/gitea.env volumes: - ./volume/gitea/db:/var/lib/postgresql/data networks: - gitea_network networks: front: driver: bridge tubearchivist_network: driver: bridge umami_network: driver: bridge gitea_network: driver: bridge