version: '3' services: web: build: . expose: - "8000" volumes: - ./instance:/app/instance - ./data/flask_session:/data/flask_session - ./data/secrets:/data env_file: - .env environment: - FLASK_ENV=production restart: unless-stopped networks: - app-network nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx/app.conf:/etc/nginx/conf.d/default.conf - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot depends_on: - web restart: unless-stopped networks: - app-network command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" certbot: image: certbot/certbot volumes: - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot restart: unless-stopped entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'" networks: - app-network networks: app-network: driver: bridge