diff --git a/Dockerfile.standalone b/Dockerfile.standalone index 1db8e32..ca9ba36 100644 --- a/Dockerfile.standalone +++ b/Dockerfile.standalone @@ -18,7 +18,21 @@ RUN CGO_ENABLED=0 GOOS=linux go build -o /taskpool . # Production stage FROM alpine:3.19 -RUN apk add --no-cache nginx supervisor + +ENV TZ=Asia/Shanghai \ + MISE_DATA_DIR=/app/envs/mise \ + MISE_CONFIG_DIR=/app/envs/mise \ + MISE_HIDE_UPDATE_WARNING=1 \ + PATH="/app/envs/mise/shims:/app/envs/mise/bin:/usr/local/bin:/usr/bin:/bin" + +RUN apk add --no-cache \ + nginx supervisor bash curl wget ca-certificates tzdata git rsync openssh-client \ + && cp /usr/share/zoneinfo/${TZ} /etc/localtime \ + && echo "${TZ}" > /etc/timezone \ + && curl https://mise.run | MISE_INSTALL_PATH=/usr/local/bin/mise sh \ + && chmod +x /usr/local/bin/mise \ + && mkdir -p /app/envs/mise \ + && mise --version # Copy frontend COPY --from=frontend-builder /app/web/dist /usr/share/nginx/html @@ -35,9 +49,9 @@ COPY docker/start-backend.sh /app/start-backend.sh # Create data directories and ship example config (used when no volume config) COPY configs/config.example.ini /app/configs/config.example.ini -RUN mkdir -p /app/data /app/configs /app/envs /app/logs \ +RUN mkdir -p /app/data /app/configs /app/envs /app/logs /app/data/scripts \ && chmod +x /app/taskpool /app/start-backend.sh \ - && apk add --no-cache wget ca-certificates + && ln -sf /app/taskpool /usr/local/bin/taskpool WORKDIR /app EXPOSE 3000 8052 diff --git a/docker/start-backend.sh b/docker/start-backend.sh index 6a68564..a5792a6 100644 --- a/docker/start-backend.sh +++ b/docker/start-backend.sh @@ -15,8 +15,20 @@ echo "[backend-wrapper] BH_DB_NAME=${BH_DB_NAME:-}" echo "[backend-wrapper] BH_DB_PATH=${BH_DB_PATH:-}" echo "[backend-wrapper] config.ini exists=$([ -f /app/configs/config.ini ] && echo yes || echo no)" -# 避免空目录挂载导致权限/路径问题 -mkdir -p /app/data /app/configs /app/envs /app/logs /app/data/scripts +# 基础目录 +mkdir -p /app/data /app/configs /app/envs /app/logs /app/data/scripts /app/envs/mise -# 直接前台运行,日志打到容器 stdout/stderr,方便 docker logs 排查 +# Mise 环境(挂载 ./envs 后仍可工作) +export MISE_DATA_DIR="${MISE_DATA_DIR:-/app/envs/mise}" +export MISE_CONFIG_DIR="${MISE_CONFIG_DIR:-/app/envs/mise}" +export MISE_HIDE_UPDATE_WARNING=1 +export PATH="/app/envs/mise/shims:/app/envs/mise/bin:/usr/local/bin:$PATH" + +if command -v mise >/dev/null 2>&1; then + echo "[backend-wrapper] mise version: $(mise --version 2>/dev/null | head -n 1)" +else + echo "[backend-wrapper] WARNING: mise not found in PATH" +fi + +# 直接前台运行,日志打到容器 stdout/stderr exec /app/taskpool server