name: xwiki networks: frontend: name: op_xwiki_frontend backend: name: op_xwiki_backend traefik: name: traefik external: true services: xwiki_db: image: postgres:15-alpine container_name: ${CONTAINER_NAME}_postgres restart: ${RESTART_POLICY} environment: - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=${DB_DATABASE} volumes: - type: bind source: ${DB_PATH} target: /var/lib/postgresql/data bind: create_host_path: true logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: - backend healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER}"] interval: 10s timeout: 5s retries: 5 xwiki_web: image: xwiki:lts-postgres-tomcat container_name: ${CONTAINER_NAME}_web restart: ${RESTART_POLICY} environment: - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=${DB_DATABASE} - DB_HOST=xwiki_db - JAVA_OPTS=-Xmx1024m volumes: - type: bind source: ${DATA_PATH} target: /usr/local/xwiki bind: create_host_path: true networks: - frontend - backend - traefik depends_on: xwiki_db: condition: service_healthy labels: - "traefik.enable=true" - "traefik.http.routers.${ROUTER_NAME}.entrypoints=websecure" - "traefik.http.routers.${ROUTER_NAME}.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)" - "traefik.http.routers.${ROUTER_NAME}.tls=true" - "traefik.http.routers.${ROUTER_NAME}.tls.certresolver=${CERTIFICATE_RESOLVER}" - "traefik.http.services.${ROUTER_NAME}.loadbalancer.server.port=${CONTAINER_PORT}" - "traefik.docker.network=${TRAEFIK_NETWORK}"