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: . ports: - "${TIMETRACK_PORT:-5000}:5000" environment: - DATABASE_URL=${DATABASE_URL} - POSTGRES_HOST=db - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - FLASK_ENV=${FLASK_ENV} - SECRET_KEY=${SECRET_KEY} - MAIL_SERVER=${MAIL_SERVER} - MAIL_USERNAME=${MAIL_USERNAME} - MAIL_PASSWORD=${MAIL_PASSWORD} - MAIL_DEFAULT_SENDER=${MAIL_DEFAULT_SENDER} depends_on: db: condition: service_healthy volumes: - ${DATA_PATH:-./data}:/data volumes: postgres_data: pgadmin_data: shared_socket: