services: app: build: context: . dockerfile: Dockerfile ports: - "3000:3000" volumes: - .:/usr/src/app - /usr/src/app/node_modules environment: DB_HOST: db DB_USER_FILE: /run/secrets/db_user DB_USER_PASSWORD_FILE: /run/secrets/db_user_password DB_NAME: battleship COOKIE_SECRET_KEY: /run/secrets/cookie_key secrets: - db_user - db_user_password - cookie_key networks: - app-network depends_on: - db db: image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_password MYSQL_USER_FILE: /run/secrets/db_user MYSQL_PASSWORD_FILE: /run/secrets/db_user_password MYSQL_DATABASE: battleship secrets: - db_user_password - db_password - db_user ports: - "3306:3306" networks: - app-network volumes: - ./db:/docker-entrypoint-initdb.d nginx: image: nginx:latest ports: - "8080:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf - /etc/letsencrypt:/etc/letsencrypt - /var/www/certbot:/var/www/certbot depends_on: - app networks: - app-network certbot: image: certbot/certbot volumes: - /etc/letsencrypt:/etc/letsencrypt - /var/www/certbot:/var/www/certbot entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h; done;'" secrets: db_user_password: file: secrets/db_user_password.txt db_user: file: secrets/db_user.txt db_password: file: secrets/db_password.txt cookie_key: file: secrets/cookie_key.txt networks: app-network: driver: bridge