我在计算机上编译了一些库。因此,我想将所有二进制文件复制到docker容器中,首先,我尝试在COPY
中使用ADD
和Dockerfile
命令:
# 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 * /
请注意,目录和文件确实存在,并且在进入创建的容器后,我可以看到复制的目录libzmq
和cppzmq
确实存在,并且我可以手动将所有二进制文件复制到根目录/
。但是,由于某种原因,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/
有效。