--- services: client: container_name: client image: node:20.18-bookworm ports: - "5000:5000" entrypoint: sh -c "npm i --no-update-notifier && npm start" user: root volumes: - "./client:/app" working_dir: /app healthcheck: test: timeout 10s bash -c 'true > /dev/tcp/127.0.0.1/5000' interval: 1m30s timeout: 15s retries: 3 start_period: 10s server: container_name: server depends_on: db: condition: service_started environment: POSTGRES_DB: tasknote POSTGRES_HOST: db POSTGRES_USER: tasknoteuser POSTGRES_PASSWORD: default POSTGRES_PORT: 5432 CORS_ALLOWED_ORIGINS: http://localhost:5000 SERVER_SERVLET_CONTEXT_PATH: / SECURITY_KEY: ${SECURITY_KEY} ports: - "8585:8585" - "5005:5005" image: maven:3.9.9-eclipse-temurin-17 entrypoint: './mvnw -ntp spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005" -Dmaven.plugin.validation=VERBOSE' working_dir: /app volumes: - "./server:/app" healthcheck: test: curl -f http://localhost:8585/actuator/health | grep '"status":"UP"' interval: 1m30s timeout: 15s retries: 3 start_period: 10s schemaspy: container_name: schemaspy profiles: ["schemaspy"] image: schemaspy/schemaspy:7.0.2 user: ${UID:-1000}:${GID:-1000} volumes: - "./schemaspy/output:/output" - "./schemaspy/postgres.properties:/schemaspy.properties" depends_on: db: condition: service_healthy server: condition: service_healthy db: container_name: db image: postgres:15.8-bookworm environment: POSTGRES_DB: tasknote POSTGRES_USER: tasknoteuser POSTGRES_PASSWORD: default PGDATA: /tmp volumes: - "./data:/tmp" ports: - "5432:5432" healthcheck: test: psql -q -U $${POSTGRES_USER} -d $${POSTGRES_DB} -c 'SELECT 1' interval: 1m30s timeout: 15s retries: 3 start_period: 10s