version: '3.8' services: postgres-server: image: postgres:16.0 container_name: postgres-filekeeper environment: POSTGRES_PASSWORD: VerySecretPassword volumes: - postgres:/var/lib/postgresql/data networks: - filekeeper redis: image: redis:7.4.0 container_name: redis-filekeeper networks: - filekeeper filekeeper: image: fossyy/filekeeper:latest container_name: filekeeper environment: SERVER_HOST: 0.0.0.0 SERVER_PORT: 8000 DOMAIN: filekeeper.fossy.my.id CORS_PROTO: https CORS_LIST: filekeeper.fossy.my.id:443,fossy.my.id:443 CORS_METHODS: POST,GET DB_HOST: postgres-filekeeper DB_PORT: 5432 DB_USERNAME: postgres DB_PASSWORD: VerySecretPassword DB_NAME: filekeeper SMTP_HOST: mail.example.com SMTP_PORT: 25 SMTP_USER: no-reply@example.com SMTP_PASSWORD: VerySecretPassword SESSION_NAME: Session SESSION_MAX_AGE: 604800 REDIS_HOST: redis-filekeeper REDIS_PORT: 6379 REDIS_PASSWORD: VerySecretPassword volumes: - /opt/filekeeper/uploads:/src/uploads networks: - filekeeper - traefik labels: - "traefik.enable=true" - "traefik.http.routers.filekeeper.rule=Host(`filekeeper-staging.com`)" - "traefik.http.services.filekeeper.loadbalancer.server.port=8000" depends_on: - postgres-server - redis restart: on-failure traefik: image: traefik:v2.8 container_name: traefik command: - "--api.insecure=true" - "--providers.docker=true" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.le.acme.tlschallenge=true" - "--certificatesresolvers.le.acme.email=your-email@example.com" - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" - "./letsencrypt:/letsencrypt" networks: - filekeeper - traefik networks: filekeeper: traefik: volumes: postgres: letsencrypt: