#docker
#docker
Вопрос:
У меня проблема с 5-й строкой моего Dockerfile. Я не мог понять, что это значит.
FROM python:3.7-alpine
LABEL author= APPLE
LABEL company= PINEAPPLE
ARG HOME_DIR='/schooldata'
ADD . $HOME_DIRECT ##[ this line ]
EXPOSE 5000
WORKDIR $HOME_DIRECT
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "app.py"]
Комментарии:
1. Я предполагаю, что это означает, что некоторые аргументы передаются в
docker build
операцию. например,docker build --build-arg HTTP_PROXY=http://10.20.30.2:1234 --build-arg FTP_PROXY=http://40.50.60.5:4567 .
HTTP_PROXY является аргументом.2. Есть ли у вас конкретная проблема?
ADD
это одна из основных директив Dockerfile, которая копирует содержимое в изображение.
Ответ №1:
Здесь :
ADD . $HOME_DIRECT
ADD
выполняет копирование ресурса из источника в текущее созданное изображение со следующей спецификацией: если оно распознано как архив (tar, zip …), оно копирует его содержимое, в противном случае оно копирует содержащиеся файлы / каталоги, такие как.
Два следующих аргумента — это исходный ресурс и целевой ресурс ADD
.
-
.
означает, что источником является контекст сборки. Контекст сборки — это последний аргументdocker build
команды : часто мы указываем,.
например,docker build FooTag .
, для представления текущего каталога, в котором выполняетсяdocker build
команда, но это может отличаться. -
$HOME_DIRECT
это целевой каталог копии внутри созданного образа.
В качестве дополнительного примечания, ADD
имеет довольно сложное поведение (он также может принимать URL в качестве источника, поэтому ему следует отдавать предпочтение COPY
только в особых случаях (URL и копировать содержимое архива).
В большинстве случаев это действительно лучше :
COPY . $HOME_DIRECT
Ответ №2:
Это добавит содержимое вашего рабочего каталога (где была выполнена команда сборки) в ваше изображение в местоположении, определенном в переменной среды HOME_DIRECT
Более подробная информация: здесь