services: outline: image: outlinewiki/outline:1.9.2 container_name: outline restart: unless-stopped env_file: .env networks: - proxy - outline volumes: - ./data/outline:/var/lib/outline/data depends_on: outline-db: condition: service_healthy outline-redis: condition: service_healthy labels: - "traefik.enable=true" - "traefik.http.services.outline.loadbalancer.server.port=3000" - "traefik.http.routers.outline.rule=Host(`${OUTLINE_HOST}`)" - "traefik.http.routers.outline.entrypoints=websecure" - "traefik.http.routers.outline.tls.certresolver=le" outline-db: image: postgres:18 container_name: outline-db restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} networks: - outline volumes: - ./data/outline-db:/var/lib/postgresql healthcheck: test: ["CMD", "pg_isready", "-U", "outline", "-d", "outline"] interval: 10s timeout: 5s retries: 5 outline-redis: image: redis:8-alpine container_name: outline-redis restart: unless-stopped networks: - outline volumes: - ./data/outline-redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: proxy: name: proxy external: true outline: name: outline