По моему Dockerfile
у меня есть:
ADD ../../myapp.war /opt/tomcat7/webapps/
Этот файл существует, поскольку ls ../../myapp.war
возвращает мне правильный файл, но при выполнении sudo docker build -t myapp .
я получаю:
Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/
2014/07/02 19:18:09 ../../myapp.war: no such file or directory
Кто-нибудь знает почему и как это правильно сделать?
Ответы:
Вы можете собрать Dockerfile из родительского каталога:
источник
-f
не представляется устаревшим в соответствии с документами -> Укажите файл Docker (-f) : docs.docker.com/engine/reference/commandline/build/…С помощью docker-compose вы можете установить контекстную папку:
источник
К сожалению, (по практическим соображениям и соображениям безопасности, я думаю), если вы хотите добавить / скопировать локальный контент, он должен быть расположен под тем же корневым путем, что и
Dockerfile
.Из документации :
РЕДАКТИРОВАТЬ: теперь есть опция (
-f
), чтобы указать путь к вашему Dockerfile; его можно использовать для достижения того, чего вы хотите, см. ниже ответ @Boedy.источник
Добавление фрагментов кода для поддержки принятого ответа.
Структура каталогов:
Запись файла Docker:
Команда, используемая для создания образа докера
источник
install_x.sh
, а?Решением для тех, кто использует composer, является использование тома, указывающего на родительскую папку:
Но я почти уверен, что можно поиграть с объемами в Dockerfile .
источник
Так как
-f
возникла другая проблема, я разработал другое решение.-f
Флаг не решить мою проблему , потому что моиonbuild
изображения ищет файл в папке и должен был назвать так:-f foo/bar/Dockerfile foo/bar
вместо того
-f foo/bar/Dockerfile .
Также обратите внимание, что это только решение для некоторых случаев, как
-f
флагисточник