From a4b4ebd8a281f35e7c11a74ad1065d5d331bdff1 Mon Sep 17 00:00:00 2001 From: puke <1129090915@qq.com> Date: Mon, 29 Dec 2025 15:19:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96docker-compose=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E6=97=B6=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 304aa6d..6d6e56a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,28 @@ version: '3.8' # docker-compose up -d services: + # Init Service - Ensures config.yaml exists before other services start + # This fixes the Docker issue where mounting a non-existent file creates a directory + init: + image: alpine:latest + volumes: + - ./:/workspace + command: > + sh -c ' + if [ -d /workspace/config.yaml ]; then + echo "⚠️ config.yaml is a directory, removing it..."; + rm -rf /workspace/config.yaml; + fi; + if [ ! -f /workspace/config.yaml ] && [ -f /workspace/config.example.yaml ]; then + echo "📋 Creating config.yaml from config.example.yaml..."; + cp /workspace/config.example.yaml /workspace/config.yaml; + echo "✅ config.yaml created successfully!"; + else + echo "✅ config.yaml already exists."; + fi + ' + restart: "no" + # API Service - FastAPI backend api: build: @@ -19,11 +41,14 @@ services: USE_CN_MIRROR: ${USE_CN_MIRROR:-false} container_name: pixelle-video-api command: .venv/bin/python api/app.py --host 0.0.0.0 --port 8000 + depends_on: + init: + condition: service_completed_successfully ports: - "8000:8000" volumes: - # Mount config file (required, read-write to allow saving from Web UI) - # IMPORTANT: Create config.yaml before first run: cp config.example.yaml config.yaml + # Mount config file (read-write to allow saving from Web UI) + # Note: init service auto-creates config.yaml from config.example.yaml if not exists - ./config.yaml:/app/config.yaml # Mount data directories for persistence # data/ contains: users/, bgm/, templates/, workflows/ (custom resources) @@ -57,11 +82,14 @@ services: USE_CN_MIRROR: ${USE_CN_MIRROR:-false} container_name: pixelle-video-web command: .venv/bin/streamlit run web/app.py --server.port 8501 --server.address 0.0.0.0 + depends_on: + init: + condition: service_completed_successfully ports: - "8501:8501" volumes: - # Mount config file (required, read-write to allow saving from Web UI) - # IMPORTANT: Create config.yaml before first run: cp config.example.yaml config.yaml + # Mount config file (read-write to allow saving from Web UI) + # Note: init service auto-creates config.yaml from config.example.yaml if not exists - ./config.yaml:/app/config.yaml # Mount data directories for persistence # data/ contains: users/, bgm/, templates/, workflows/ (custom resources)