Как работает определение ARG в Dockerfile? - PullRequest
0 голосов
/ 01 ноября 2019
# Set to 497 by default, which is the groupID used by AWS Linux ECS instance
ARG DOCKER_GID=497

# Set default value of 497 if DOCKER_GID set to blank string by Docker compose
RUN groupadd -g ${DOCKER_GID} docker

В отношении второй строки (инструкция RUN) ожидается выбор идентификатора группы по умолчанию 497, если значение идентификатора группы не передано в командной строке.

Документация не помогла ответить на этот вопрос

RUN groupadd -g ${DOCKER_GID:-497} docker решает эту проблему.


Почему RUN groupadd -g ${DOCKER_GID} docker выдает ошибку ниже? несмотря на ARG DOCKER_GID=497 в Dockerfile ...

Service 'jenkins' failed to build: The command '/bin/sh -c groupadd -g ${DOCKER_GID} docker' returned a non-zero code: 3

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

У вас есть две возможности объявить ARGS в dockerfile.

С некоторым значением по умолчанию

ARG DOCKER_GID=497

В этом случае вам не нужно перепроверятьзначение DOCKER_GID, как если бы вы пропустили во время сборки, имеет значение по умолчанию 497. поэтому ваша команда RUN будет

RUN groupadd -g ${DOCKER_GID} docker

Без значения по умолчанию

ARG DOCKER_GID

В этом случае вам необходимо использовать эту команду RUN.

RUN groupadd -g ${DOCKER_GID:-497} docker

Поскольку DOCKER_GID не имеет значения по умолчанию, и если кто-то не передал это значение во время сборки, он назначит 497 в качестве значения по умолчанию.

1 голос
/ 01 ноября 2019

Да, вы можете просто использовать RUN groupadd -g ${DOCKER_GID} docker, и это создаст группу docker с GID DOCKER_GID.

. Вы можете проверить это довольно быстро, просто создав следующий файл dockerfile.

FROM ubuntu
ARG DOCKER_GID=497
RUN groupadd -g ${DOCKER_GID} docker

Создайте два разных изображения, одно выдает --build-arg DOCKER_GID=12345, а другое без аргумента сборки. Запустите их и проверьте cat /etc/group | grep docker, что GID - это то, что вы ожидаете.

На самом деле, только что протестировано с использованием ${DOCKER_GID:-497}, и все работает отлично. Итак, что на самом деле ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...