Bash команды игнорируются в моем скрипте ENTRYPOINT Docker bash - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть несколько библиотек, которые я скомпилировал на моей машине. Поэтому я хочу скопировать все двоичные файлы в мой контейнер 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/

Это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...