Dockerfile在构建中找不到Shell脚本

时间:2019-03-29 16:37:47

标签: linux bash shell docker go

我正在尝试docker构建一个利用go的应用程序。要安装go,dockerfile具有以下命令(顺便执行此命令):

RUN wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz \
    && tar -xf go1.11.linux-amd64.tar.gz \
    && mv go /usr/local

当脚本在“安装”子目录中运行外壳文件时,会出现问题。注意,输出以下两个步骤:

Step 9/13 : RUN . install/install-lmdb-linux.sh
 ---> Running in 0c666807720a
: not found install/install-lmdb-linux.sh:
: not found install/install-lmdb-linux.sh:
-e

Installing LMDB

Cloning into 'lmdb'...
: not found install/install-lmdb-linux.sh:
make: Entering directory '/root/bystro/lmdb/libraries/liblmdb'
gcc -pthread -O2 -g -W -Wall -Wno-unused-parameter -Wbad-function-cast -Wuninitialized   -c mdb.c
gcc -pthread -O2 -g -W -Wall -Wno-unused-parameter -Wbad-function-cast -Wuninitialized   -c midl.c
ar rs liblmdb.a mdb.o midl.o
ar: creating liblmdb.a

此shell脚本似乎失败了,但是以某种方式恢复(?),构建继续进行:

Step 11/13 : RUN . install/install-go-packages.sh
 ---> Running in 7700bf77c2b1
: not found install/install-go-packages.sh:
-e

Installing go packages (bystro-vcf, stats, snp)

: not found install/install-go-packages.sh:
: not found install/install-go-packages.sh:
: not found install/install-go-packages.sh:
Made /root/go path
: not found install/install-go-packages.sh:
: not found install/install-go-packages.sh:
: not found: install/install-go-packages.sh:
: not found: install/install-go-packages.sh:
: not found: install/install-go-packages.sh:
: not found: install/install-go-packages.sh:
: not found: install/install-go-packages.sh:
: not found: install/install-go-packages.sh:
The command '/bin/sh -c . install/install-go-packages.sh' returned a non-zero code: 127

此脚本是构建失败的地方,退出代码为127(找不到命令)。该脚本的任务基本上只是为应用安装一些依赖项。

我的调试:

弄乱了两个RUN函数的变化之后,我最终决定记录一些情况:检查运行时是否确实存在这两个Shell脚本,并查看运行时是否存在Go。都在场。

Step 9/15 : RUN ls install/
 ---> Running in 0f0ad051b009
export-bystro-libs.sh
export-go-path-linux.sh
install-apt-deps.sh
install-go-linux.sh
install-go-mac.sh
install-go-packages.sh
install-liftover-linux.sh
install-lmdb-linux.sh
install-mac-deps.sh
install-perl-libs.sh
install-perlbrew-linux.sh
install-rpm-deps.sh
update-packages.sh
Step 12/15 : RUN go version
 ---> Running in b8b9d08ef9c3
go version go1.11 linux/amd64

另外,请注意,当我手动运行它们时,两个脚本都能完美执行。

问题:

为什么我的构建失败?似乎Docker具有脚本,执行它们的工具以及执行该脚本的正确指令,因此我不确定如何实现此目的。

1 个答案:

答案 0 :(得分:0)

如果您不想使用绝对路径。 有一个用于更改工作目录的命令

WORKDIR /your/directory

然后使用RUN来执行Shell命令

参考:Change directory command in Docker?