services: app: image: ${HARBOR_REGISTRY:-192.168.31.213:10081}/wordcloud/wordcloud-board-app:${IMAGE_TAG:-latest} build: context: . dockerfile: Dockerfile.frontend args: VITE_REALTIME_MODE: ${VITE_REALTIME_MODE:-websocket} VITE_REALTIME_WS_URL: ${VITE_REALTIME_WS_URL:-/ws} VITE_WORDCLOUD_API_BASE_URL: ${VITE_WORDCLOUD_API_BASE_URL:-/wordcloud-api} VITE_WORDCLOUD_DEFAULT_PRODUCT_ID: ${VITE_WORDCLOUD_DEFAULT_PRODUCT_ID:-prod_362d8ecaced241e5ab81dddfc880d6b0} ports: - "${APP_PORT:-47880}:80" depends_on: realtime: condition: service_healthy environment: WORDCLOUD_API_UPSTREAM: ${WORDCLOUD_API_UPSTREAM:-http://192.168.31.213:8000} restart: unless-stopped realtime: image: ${HARBOR_REGISTRY:-192.168.31.213:10081}/wordcloud/wordcloud-board-realtime:${IMAGE_TAG:-latest} build: context: ./server dockerfile: Dockerfile environment: REALTIME_PORT: 8787 WORDCLOUD_API_UPSTREAM: ${WORDCLOUD_API_UPSTREAM:-http://192.168.31.213:8000} ORDERS_ADMIN_PASSWORD: ${ORDERS_ADMIN_PASSWORD:-zhihui2024} ORDERS_TOKEN_SECRET: ${ORDERS_TOKEN_SECRET:-wordcloud-orders-demo} expose: - "8787" restart: unless-stopped