version: '3.9' volumes: data: services: nginx: container_name: reftest_server image: nginx:alpine volumes: - ./certbot:/etc/letsencrypt:ro - ./nginx:/etc/nginx - ./src/html/robots.txt:/usr/share/nginx/html/robots.txt:ro - ./ref-test/app/root:/usr/share/nginx/html/root:ro - ./ref-test/app/admin/static:/usr/share/nginx/html/admin/static:ro - ./ref-test/app/editor/static:/usr/share/nginx/html/editor/static:ro - ./ref-test/app/quiz/static:/usr/share/nginx/html/quiz/static:ro - ./ref-test/app/view/static:/usr/share/nginx/html/view/static:ro ports: - 80:80 - 443:443 restart: unless-stopped networks: - frontend depends_on: - app command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" app: container_name: reftest_app image: reftest build: ./ref-test env_file: - ./.env ports: - 5000 volumes: - data:/ref-test/data restart: unless-stopped networks: - frontend - backend depends_on: - postfix postfix: container_name: reftest_postfix image: catatnight/postfix:latest restart: unless-stopped env_file: - ./.env ports: - 25 networks: - backend certbot: container_name: reftest_certbot image: certbot/certbot volumes: - ./certbot:/etc/letsencrypt - ./src/html:/var/www/html entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'" networks: frontend: external: false backend: external: false