Dockerfile COPY создает нежелательный подкаталог в образе - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу создать контейнер Docker, и я написал образ. Все отлично работает, кроме команды COPY, где я запутался. Мой Dockerfile:

RUN HOME=/home/ros rosdep update

RUN mkdir -p /home/ros/workspace

# Copy the files
COPY $PWD/src/a_file /home/ros/workspace/src
COPY $PWD/src/b_file /home/ros/workspace/src

a_file - это каталог, подобный b_file. Когда я пытаюсь скопировать эти каталоги во вновь созданный каталог с именем /home/ros/workspace/src, я хочу, чтобы a_file и b_file находились внутри /home/ros/workspace/src. Вместо этого я получаю другой каталог src /home/ros/workspace/src/src), а содержимое a_file и b_file находится внутри этого каталога.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

В вашем Dockerfile переменная PWD относится к контексту изображения (т.е. внутри изображения).

Из Документация КОПИЯ :

пути к файлам и каталогам будут интерпретироваться как относящиеся к источнику контекста сборки.

Если каталоги src находятся в корне вашего контекста сборки , в вашем примере это будет:

...
COPY src/a_file /home/ros/workspace/src
COPY src/b_file /home/ros/workspace/src
...
0 голосов
/ 05 ноября 2018


Как упоминалось в других ответах, $PWD относится к контексту изображения.
Попробуйте вместо этого использовать ..

Чтобы настроить рабочий каталог, используйте WORKDIR

Также, a_file и b_file находятся в src/

В целом, это должно работать (не проверено):

FROM <your-base-image>
WORKDIR /home/ros

RUN rosdep update
RUN mkdir -p workspace

# Copy the files
COPY ./src workspace/src
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...