【问题标题】:command not found when running in docker bash script在 docker bash 脚本中运行时找不到命令
【发布时间】:2017-08-10 09:58:55
【问题描述】:

我有一个 docker-compose 文件,它在进入时执行一个 bash 脚本。

这个 bash 脚本会删除一些文件,然后尝试printenv,这会返回错误printenv: not found

现在,如果我在交互模式下运行 docker 容器并执行 printenv 它工作正常。

以交互模式运行 docker

docker run -it microsoft/aspnetcore-build /bin/sh

> printenv 工作正常

在 docker-compose 中运行

docker-compose -f docker-compose-build.yml up

Starting ci_aspnetapp-build_1
Attaching to ci_aspnetapp-build_1
aspnetapp-build_1  | rm -rf ../**/bin -> Done
aspnetapp-build_1  | rm -rf ../**/obj -> Done
aspnetapp-build_1  | ./ci/build.sh: 8: ./ci/build.sh: printenv: not found
ci_aspnetapp-build_1 exited with code 127

Bash 脚本 (build.sh)

#!bin/bash
set -e
rm -rf ../**/bin
printf "rm -rf ../**/bin -> Done\n"
rm -rf ../**/obj
printf "rm -rf ../**/obj -> Done\n"
rm -rf ../**/publish/web
printenv
printf "rm -rf ../**/publish/web -> Done\n"

Docker-Compose 文件 (docker-compose-build.yml)

version: '2'
services:
  aspnetapp-build:
    image: microsoft/aspnetcore-build
    volumes:
      - ../.:/sln
    working_dir: /sln
    entrypoint: ["sh", "./ci/build.sh"]

【问题讨论】:

    标签: bash docker docker-compose


    【解决方案1】:

    您正在删除包含 printenv 的 bin 目录。

    这应该说明它:

    docker run -it --rm -w "/srv" microsoft/aspnetcore-build sh -c 'printenv; rm -rf ../**/bin; printenv'

    【讨论】:

      猜你喜欢
      • 2019-04-15
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2014-03-18
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      相关资源
      最近更新 更多