У меня есть несколько библиотек, которые я скомпилировал на моей машине. Поэтому я хочу скопировать все двоичные файлы в мой контейнер 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
существуют, и я могу вручную скопировать все двоичные файлы в root /
. Однако по какой-то причине 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
команд, выполняется. Я попробовал ту же команду (cp
команда) из моего контейнера bash терминала, и она сработала.
В чем может быть проблема?
РЕДАКТИРОВАТЬ:
Эта часть файла работает, и двоичные файлы действительно копируются в каталог root:
# 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/
Это работает.