services: db: image: postgres:15 environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data ports: - "${POSTGRES_PORT:-5432}:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 10s timeout: 5s retries: 5 pgadmin: image: dpage/pgadmin4:latest environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD} ports: - "${PGADMIN_PORT:-5050}:80" depends_on: - db volumes: - pgadmin_data:/var/lib/pgadmin timetrack: build: . environment: FLASK_ENV: ${FLASK_ENV:-production} SECRET_KEY: ${SECRET_KEY} DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} MAIL_SERVER: ${MAIL_SERVER} MAIL_PORT: ${MAIL_PORT} MAIL_USE_TLS: ${MAIL_USE_TLS} MAIL_USERNAME: ${MAIL_USERNAME} MAIL_PASSWORD: ${MAIL_PASSWORD} MAIL_DEFAULT_SENDER: ${MAIL_DEFAULT_SENDER} ports: - "${TIMETRACK_PORT:-5000}:5000" depends_on: db: condition: service_healthy volumes: - ${DATA_PATH:-./data}:/data - shared_socket:/host/shared volumes: postgres_data: pgadmin_data: shared_socket: