services: checkmate-db: image: mysql:8.0 container_name: checkmate-db restart: always ports: - 3306:3306 expose: - 3306 env_file: - .env volumes: - checkmate-mysql:/var/lib/mysql networks: - checkmate-network healthcheck: test: [ 'CMD-SHELL', 'mysqladmin ping -h localhost -u root -proot_password || exit 1', ] interval: 10s timeout: 5s retries: 5 start_period: 30s db_seeder: image: mysql:8.0 container_name: db-seeder depends_on: checkmate-db: condition: service_healthy networks: - checkmate-network volumes: - ./seedData.sql:/seedData.sql environment: MYSQL_ROOT_PASSWORD: root_password entrypoint: > sh -c "sleep 10 && mysql --host=checkmate-db --user=root --password=root_password < ./seedData.sql && echo 'Database seeding completed' && exit" checkmate-app: build: context: . dockerfile: ./dockerfile container_name: checkmate-app depends_on: checkmate-db: condition: service_healthy env_file: - .env environment: DB_URL: ${DOCKER_DB_URL} NODE_ENV: production ports: - 3000:3000 networks: - checkmate-network command: > sh -c "yarn start" checkmate-mcp: build: context: ./mcp-server dockerfile: ./Dockerfile container_name: checkmate-mcp restart: on-failure stdin_open: true tty: true depends_on: checkmate-app: condition: service_started env_file: - ./mcp-server/.env environment: CHECKMATE_API_BASE: http://checkmate-app:3000 NODE_ENV: production networks: - checkmate-network volumes: # Mount logs directory (optional, for debugging) - ./mcp-server/logs:/app/logs healthcheck: test: ["CMD", "node", "-e", "process.exit(0)"] interval: 30s timeout: 5s retries: 3 start_period: 10s volumes: checkmate-mysql: name: checkmate-db checkmate-app: name: checkmate-app networks: checkmate-network: driver: bridge