问题描述
我目前遇到了这个问题:
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