diff --git a/Dockerfile.rootless b/Dockerfile.rootless index 8806bed797..3714a59518 100644 --- a/Dockerfile.rootless +++ b/Dockerfile.rootless @@ -75,8 +75,8 @@ RUN mkdir -p /var/lib/gitea /etc/gitea RUN chown git:git /var/lib/gitea /etc/gitea COPY --from=build-env /tmp/local / -COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/devcontainer_init.sh /var/lib/gitea/devcontainer_init.sh -COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/devcontainer_restart.sh /var/lib/gitea/devcontainer_restart.sh +COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/devcontainer_init.sh /app/gitea/devcontainer_init.sh +COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/devcontainer_restart.sh /app/gitea/devcontainer_restart.sh COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini COPY --from=build-env /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete /etc/profile.d/gitea_bash_autocomplete.sh diff --git a/services/devcontainer/devcontainer.go b/services/devcontainer/devcontainer.go index 62e681855a..03e8531665 100644 --- a/services/devcontainer/devcontainer.go +++ b/services/devcontainer/devcontainer.go @@ -643,10 +643,42 @@ func claimDevcontainerResource(ctx *context.Context, newDevContainer *CreateDevc newURL := parsedURL.String() // Read the init script from file - initializeScriptContent, err := os.ReadFile("devcontainer_init.sh") - if err != nil { - return fmt.Errorf("读取初始化脚本失败: %v", err) + var initializeScriptContent, restartScriptContent []byte + _, err = os.Stat("devcontainer_init.sh") + if os.IsNotExist(err) { + _, err = os.Stat("/app/gitea/devcontainer_init.sh") + if os.IsNotExist(err) { + return fmt.Errorf("读取初始化脚本失败: %v", err) + } else { + initializeScriptContent, err = os.ReadFile("/app/gitea/devcontainer_init.sh") + if err != nil { + return fmt.Errorf("读取初始化脚本失败: %v", err) + } + } + } else { + initializeScriptContent, err = os.ReadFile("devcontainer_init.sh") + if err != nil { + return fmt.Errorf("读取初始化脚本失败: %v", err) + } } + _, err = os.Stat("devcontainer_restart.sh") + if os.IsNotExist(err) { + _, err = os.Stat("/app/gitea/devcontainer_restart.sh") + if os.IsNotExist(err) { + return fmt.Errorf("读取初始化脚本失败: %v", err) + } else { + restartScriptContent, err = os.ReadFile("/app/gitea/devcontainer_restart.sh") + if err != nil { + return fmt.Errorf("读取初始化脚本失败: %v", err) + } + } + } else { + restartScriptContent, err = os.ReadFile("devcontainer_restart.sh") + if err != nil { + return fmt.Errorf("读取初始化脚本失败: %v", err) + } + } + cfg, err := setting.NewConfigProviderFromFile(setting.CustomConf) if err != nil { log.Error("Failed to load custom conf '%s': %v", setting.CustomConf, err) @@ -657,9 +689,6 @@ func claimDevcontainerResource(ctx *context.Context, newDevContainer *CreateDevc initializeScript = strings.ReplaceAll(initializeScript, "$HOST_DOCKER_INTERNAL", cfg.Section("server").Key("DOMAIN").Value()) initializeScript = strings.ReplaceAll(initializeScript, "$WORKDIR", newDevContainer.DevcontainerWorkDir) initializeScript = strings.ReplaceAll(initializeScript, "$REPO_URL", newURL) - log.Info("devcontainer_init.sh: %s", initializeScript) - - restartScriptContent, err := os.ReadFile("devcontainer_restart.sh") restartScript := strings.ReplaceAll(string(restartScriptContent), "$WORKDIR", newDevContainer.DevcontainerWorkDir) // 2. 根据配置文件中指定的 DevContainer Agent 派遣创建任务 switch setting.Devcontainer.Agent {