version: '3' services: nginx: image: nginx:latest restart: unless-stopped container_name: nginx ports: - 80:80 - 443:443 networks: - internal volumes: - ./backend/public:/app/backend/public - ./frontend/public:/app/frontend/public - ./conf/nginx/:/etc/nginx:ro - ./logs/nginx/:/var/log/nginx - /etc/localtime:/etc/localtime:ro - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot depends_on: - frontend - backend command: '/bin/sh -c ''while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"''' certbot: image: certbot/certbot:latest volumes: - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'" backend: container_name: backend build: context: . dockerfile: ./docker/${ENVIRONMENT}/backend/Dockerfile restart: unless-stopped ports: - ${BEPORT}:${BEPORT} networks: - internal depends_on: - postgres env_file: .env frontend: container_name: frontend build: context: . dockerfile: ./docker/${ENVIRONMENT}/frontend/Dockerfile restart: unless-stopped ports: - ${FEPORT}:${FEPORT} networks: - internal env_file: - ./.env postgres: image: postgres container_name: postgres platform: linux/amd64 restart: unless-stopped env_file: .env environment: POSTGRES_USER: ${PGUSERNAME} POSTGRES_PASSWORD: ${PGPASSWORD} POSTGRES_DB: ${PGDATABASE} volumes: - postgres-data:/var/lib/postgresql/data/ networks: - internal volumes: postgres-data: networks: internal: name: internal driver: bridge