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

问题描述

我目前遇到了这个问题:

Command Failed: /bin/sh -c ./.devcontainer/postCreateCommand.sh

这是

    "postCreateCommand": "./.devcontainer/postCreateCommand.sh",

来自 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

任何想法如何调试 "PostCreateCommand"输出的帮助不大,我不想开始将此项目简化为最小的工作示例。

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

解决方法

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

remoteUser 更改为 root,在 devcontainer.json 配置文件中应该允许在使用 postCreateCommand.sh 运行时成功执行 bash shell 脚本。

  • 我已经尝试使用 python:3.8-slim-buster Docker 映像,并在 non-root 中设置了 Dockerfile 用户。

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

    "postCreateCommand": "bash ./.devcontainer/postCreateCommand.sh","remoteUser": "root",
  • 我使用了以下 ./.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
    
    

通常,不建议将 root 用于生产环境。

这里有更多关于 postCreateCommand

的信息