services: db: image: postgres:18-bookworm environment: TZ: "Europe/Rome" PGTZ: "Europe/Rome" POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} restart: unless-stopped networks: - dokploy-network ports: - "5433:5432" volumes: - dbdata_v18:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] interval: 1s timeout: 5s retries: 10 migrate: image: migrate/migrate:latest depends_on: db: condition: service_healthy volumes: - ./migrations:/migrations:ro networks: - dokploy-network command: [ "-verbose", "-path", "/migrations", "-database", "postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable", "up" ] restart: "no" db-backup: build: context: ../db-backup/ dockerfile: Dockerfile restart: "no" pull_policy: build depends_on: - db environment: POSTGRES_HOST: db POSTGRES_PORT: 5432 POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} BACKUP_DIR: /backups BACKUP_KEEP_COUNT: 5 BACKUP_SCHEDULE: null volumes: - ./backups:/backups networks: - dokploy-network networks: dokploy-network: external: true volumes: dbdata_v18: