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

标签 docker visual-studio-code docker-compose vscode-devcontainer

我目前遇到这个问题:

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 shell 脚本在使用 bash 运行时成功。

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

  • 我已将以下内容添加到 ./.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的更多信息

关于docker - 有没有办法在 VSCode Devcontainers 中调试 PostCreateCommand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65909781/

相关文章:

Docker run --entrypoint 带多个参数

postgresql - 如何将环境变量传递到 .sql 文件中?

Docker 容器中的 MySQL

docker - 无法在容器内运行 mysql,该容器使用 dockerFile 构建镜像

javascript - JS 代码不起作用,尝试在 css 类(class)中做一个演示

docker 组成 : Is it possible to start a service before building another?

python - 模块未找到错误: No module named 'pymongo' with Docker and Airflow

bash - 加载.env的Dockerfile入口点bash文件在容器中不可见

android - 我如何通过将鼠标悬停在Visual Studio Code之类的android studio中的小部件上来获取定义

javascript - 如何从vscode中的工作区符号搜索中忽略目录