Должен ли файл Dockerfile ARG без значения по умолчанию выдавать ошибку, если ARG не указан?

#docker #dockerfile

Вопрос:

У меня есть более сложный файл Dockerfile, который удался, когда его действительно не должно было быть (IMHO) — он использовал ARG, у которого не было значения по умолчанию и значения, предоставленного в качестве входных данных для КОПИИ. Я создал простой пример для иллюстрации. Я, наверное, чего-то не понимаю … есть ли лучший способ потребовать ARG для сборки?

Должен ли следующий файл Dockerfile выдавать ошибку? Я понял, что ARG var без значения по умолчанию требует, чтобы для успешной сборки был предоставлен ARG? И КОПИЯ не должна принимать пустой аргумент (они разрешаются во время сборки)? Или, может быть, я что-то упускаю? Спасибо за мысли …

 FROM postgres:latest
ARG ARG_NO_DEFAULT

COPY $ARG_NO_DEFAULT $ARG_NO_DEFAULT
 

Вызывается через:

 docker build -f Dockerfile . --no-cache
 

Производит:

 11:15:08 haz:~/proj/docker/argtest $ docker build -f novals.Dockerfile . --no-cache
[ ] Building 0.4s (7/7) FINISHED                                                                                                                      
 => [internal] load build definition from novals.Dockerfile                                                                                      0.0s
 => => transferring dockerfile: 127B                                                                                                             0.0s
 => [internal] load .dockerignore                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/postgres:latest                                                                               0.2s
 => [internal] load build context                                                                                                                0.0s
 => => transferring context: 924B                                                                                                                0.0s
 => CACHED [1/2] FROM docker.io/library/postgres:latest@sha256:117c3ea384ce21421541515edfb11f2997b2c853d4fdd58a455b77664c1adc20                  0.0s
 => [2/2] COPY                                                                                                                                   0.0s
 => exporting to image                                                                                                                           0.0s
 => => exporting layers                                                                                                                          0.0s
 => => writing image sha256:39a43e5133ae934c6682c4a9a5f9b312d9a93270426d4e68010cdbba86a8c469                                                     0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
11:15:28 haz:~/proj/docker/argtest $