services: memos-db: image: postgres:17-alpine container_name: memos-db restart: unless-stopped environment: TZ: ${TZ} POSTGRES_DB: ${MEMOS_DB_NAME} POSTGRES_USER: ${MEMOS_DB_USER} POSTGRES_PASSWORD: ${MEMOS_DB_PASSWORD} volumes: - /opt/memos/postgres:/var/lib/postgresql/data:Z healthcheck: test: ["CMD-SHELL", "pg_isready -U ${MEMOS_DB_USER} -d ${MEMOS_DB_NAME}"] interval: 10s timeout: 5s retries: 10 start_period: 20s networks: - memos_internal memos: image: neosmemo/memos:stable pull_policy: always container_name: memos restart: unless-stopped depends_on: memos-db: condition: service_healthy environment: MEMOS_PORT: 5230 MEMOS_DATA: /var/opt/memos MEMOS_DRIVER: postgres MEMOS_DSN: postgresql://${MEMOS_DB_USER}:${MEMOS_DB_PASSWORD}@memos-db:5432/${MEMOS_DB_NAME}?sslmode=disable MEMOS_INSTANCE_URL: https://${MEMOS_DOMAIN} volumes: - /opt/memos/data:/var/opt/memos:Z networks: - memos_internal - proxy labels: traefik.http.services.memos.loadbalancer.server.port: "5230" networks: memos_internal: driver: bridge proxy: external: true