Bash命令在我的ENTRYPOINT Docker bash脚本中被忽略

时间:2020-04-01 09:11:57

标签: bash docker

我在计算机上编译了一些库。因此,我想将所有二进制文件复制到docker容器中,首先,我尝试在COPY中使用ADDDockerfile命令:

# Installing zeromq
WORKDIR /${home}/${user}/master-wheel
COPY ${PWD}/libzmq ./libzmq
COPY ${PWD}/cppzmq ./cppzmq
WORKDIR /${home}/${user}/master-wheel/libzmq/binaries
ADD * /
WORKDIR /${home}/${user}/master-wheel/cppzmq/binaries
ADD * /

请注意,目录和文件确实存在,并且在进入创建的容器后,我可以看到复制的目录libzmqcppzmq确实存在,并且我可以手动将所有二进制文件复制到根目录/。但是,由于某种原因,Dockerfile不会复制,因此我无法弄清楚可能是什么问题。

然后,我决定在ENTRYPOINT脚本中执行此操作,它看起来像这样:

#!/bin/bash
#set -e
#set -u

echo "==> Executing master image entrypoint ..."

echo "-> Setting up"
cp -r /home/ed/master-wheel/libzmq/binaries/* /
cp -r /home/ed/master-wheel/cppzmq/binaries/* /
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
ldconfig

echo "==> Container ready"
exec "$@"

除两个cp命令之外的所有命令都将执行。我从容器bash终端尝试了相同的命令(cp命令),它起作用了。

可能是什么问题?

编辑:

文件的这一部分有效,二进制文件确实复制到了根目录:

# Installing libfreespace
WORKDIR /${home}/${user}/master-wheel
COPY ${PWD}/libfreespace ./libfreespace
WORKDIR /${home}/${user}/master-wheel/libfreespace/binaries
COPY * /

编辑2:

看来,如果我做这样的事情:

WORKDIR /${home}/${user}/master-wheel
COPY ${PWD}/libzmq ./libzmq
COPY ${PWD}/cppzmq ./cppzmq
WORKDIR /${home}/${user}/master-wheel/libzmq/binaries/usr/
ADD * /usr/
WORKDIR /${home}/${user}/master-wheel/cppzmq/binaries/usr/
ADD * /usr/

有效。

0 个答案:

没有答案