services: game-server: build: context: . dockerfile: Dockerfile container_name: game-server restart: unless-stopped environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:80 expose: - "80" networks: - game-network logging: driver: "json-file" options: max-size: "10m" max-file: "3" nginx: image: nginx:alpine container_name: nginx-proxy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./ssl:/etc/nginx/ssl:ro - ./certbot/conf:/etc/letsencrypt:ro - ./certbot/www:/var/www/certbot networks: - game-network depends_on: - game-server logging: driver: "json-file" options: max-size: "10m" max-file: "3" # Optional: Certbot for Let's Encrypt SSL certificates certbot: image: certbot/certbot container_name: certbot volumes: - ./certbot/conf:/etc/letsencrypt - ./certbot/www:/var/www/certbot entrypoint: /bin/sh -c 'trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;' restart: unless-stopped networks: - game-network networks: game-network: driver: bridge