有没有办法在 VSCode Devcontainers 中调试 PostCreateCommand?

Fel*_* B. 6 docker docker-compose visual-studio-code vscode-devcontainer

我目前遇到这个问题:

Command failed: /bin/sh -c ./.devcontainer/postCreateCommand.sh
Run Code Online (Sandbox Code Playgroud)

哪一个是

    "postCreateCommand": "./.devcontainer/postCreateCommand.sh",
Run Code Online (Sandbox Code Playgroud)

设置从devcontainer.json.

但是当我停用“postCreateCommand”并在创建容器后手动运行它时,该脚本会起作用。这让我觉得问题可能出在脚本的路径上。但事实也并非如此。因为只有一个 echo 命令的空脚本似乎可以工作。

脚本如下:

echo "Installing Developer Requirements"

apt-get update && apt-get install -y man git
pip3 install -r .devcontainer/dev_pip_requirements.txt
Run Code Online (Sandbox Code Playgroud)

有什么想法如何调试吗"PostCreateCommand"?输出没有什么帮助,我不想开始将这个项目简化为最小的工作示例。

我更改了 git 以在 Windows 上检查以 linux 文件结尾的所有内容。我三次检查 shell 脚本是否有 LF 结尾。所以这些也不应该成为问题。(他们以前是)。

小智 7

我认为原因之一可能是用户没有足够的权限来执行该apt-get update命令。

将配置文件中的 更改remoteUserroot,应该允许在使用 运行 shell 脚本时成功devcontainer.json执行shell 脚本。postCreateCommand.shbash

  • 我已经使用python:3.8-slim-busterDocker 映像进行了尝试,并non-rootDockerfile.

  • 我已将以下内容添加到./.devcontainer/devcontainer.json

    "postCreateCommand": "bash ./.devcontainer/postCreateCommand.sh",
    "remoteUser": "root",
    
    Run Code Online (Sandbox Code Playgroud)
  • 我使用过以下内容./.devcontainer/postCreateCommand.sh

    #!/usr/bin/env bash
    
    set -ex
    
    apt-get update && apt-get install -y man git && rm -rf /var/lib/apt/lists/*
    
    pip install --requirement ./.devcontainer/dev_pip_requirements.txt
    
    
    Run Code Online (Sandbox Code Playgroud)

一般来说,root不建议用于生产环境。

这里有一些更多信息postCreateCommand

  • 实际上,我很晚才解决了这个特定问题,但忘记了我问过的问题:问题是脚本无法执行。`chmod +x` 解决了这个问题。但这并不能回答是否有办法调试 vscode devcontainers 的问题 (2认同)