Кто-нибудь может объяснить, что означает 5-я строка . т.е. ADD . Значение $HOME_DIR в файле docker?

#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

Более подробная информация: здесь