version: '3.8' services: mysql: image: mysql:8.0 container_name: mysql-auth restart: always environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: authdb MYSQL_USER: authuser MYSQL_PASSWORD: authpassword ports: - '3310:3306' volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 auth-service: image: node:20 container_name: auth-service restart: always environment: DB_HOST: mysql DB_PORT: 3306 DB_NAME: authdb DB_USER: authuser DB_PASSWORD: authpassword JWT_SECRET: supersecretkey volumes: - ./auth-service:/usr/src/app working_dir: /usr/src/app command: bash -c "npm install && npm start" depends_on: mysql: condition: service_healthy mail-service: image: node:20 container_name: mail-service restart: always volumes: - ./mail-service:/usr/src/app working_dir: /usr/src/app command: bash -c "npm install && npm start" environment: DB_HOST: mysql DB_PORT: 3306 DB_NAME: authdb DB_USER: authuser DB_PASSWORD: authpassword nginx-proxy-manager: image: 'jc21/nginx-proxy-manager:latest' container_name: nginx-proxy-manager restart: unless-stopped ports: - '80:80' - '443:443' - '81:81' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt volumes: mysql_data: