Копировать файлы с хоста в контейнер при запуске контейнера на любом хосте - PullRequest
0 голосов
/ 12 июня 2019

Я хочу скопировать файлы с хоста в контейнер Docker при запуске контейнера на любом хосте.

вот мой Dockerfile

FROM tomcat:9
EXPOSE 8080
ADD ./target/app.war /tmp/myapp.war
RUN unzip /tmp/myapp.war -d /usr/local/tomcat/webapps/myapp
ENTRYPOINT ["cp", "-r", "/data/*", "/usr/local/tomcat/webapps/myapp/data"]

После построения образа докера docker build -t myappimage .

Я запускаю его с:

docker run --mount type=bind,source=d:/data,destination=/data --rm -it -p 8081:8080 myappimage

но выдает ошибку cp: cannot stat '/data/*': No such file or directory

Я не уверен, почему монтирование не работает, он должен копировать все файлы из моего каталога хоста d: / data в каталог контейнера Docker / data при запуске контейнера.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Я надеюсь, что каталог /usr/local/tomcat/webapps/myapp/data существует в образе до копирования. Команда работает нормально на моей машине (Mac). Не уверен, что проблема вызвана d:/.

Также вы можете попробовать использовать опцию -v с флагом z (это решило ту же проблему для меня), предполагая, что вы находитесь в d: каталоге

docker run -v "$(pwd)"/data:/data:z --rm -it -p 8081:8080 myappimage

С -v это создаст конечную точку для вас. Вы можете прочитать здесь

0 голосов
/ 12 июня 2019

Эта команда в ENTRYPOINT выполняется в контейнере Docker.

Вы можете попробовать:

FROM tomcat:9
EXPOSE 8080
ADD ./target/app.war /tmp/myapp.war
RUN unzip /tmp/myapp.war -d /usr/local/tomcat/webapps/myapp
COPY /data /usr/local/tomcat/webapps/myapp/data/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...