Опция `--chown` для COPY и ADD не позволяет использовать переменные.Существует ли обходной путь? - PullRequest
0 голосов
/ 22 декабря 2018

В Dockerfile распространенным способом копирования каталога от имени пользователя без полномочий root (например, $ UID 1000) является:

COPY --chown=1000:1000 /path/to/host/dir/ /path/to/container/dir

Однако вместо этого я хочу использовать переменные.Например

ARG USER_ID=1000
ARG GROUP_ID=1000
COPY --chown=${USER_ID}:${GROUP_ID} /path/to/host/dir/ /path/to/container/dir

Но это невозможно.Существует ли обходной путь?

Примечание Я знаю, что возможный обходной путь может состоять в том, чтобы скопировать каталог как root и затем запустить chown для каталога (переменные работают нормально с RUN).Однако размер изображения будет увеличиваться только для использования chown в отдельной команде.

1 Ответ

0 голосов
/ 22 декабря 2018

Вы можете создать пользователя перед запуском --chown;

mkdir -p test && cd test
mkdir -p path/to/host/dir/
touch path/to/host/dir/myfile

Создать свой Dockerfile:

FROM busybox

ARG USER_ID=1000
ARG GROUP_ID=1000

RUN addgroup -g ${GROUP_ID} mygroup \
 && adduser -D myuser -u ${USER_ID} -g myuser -G mygroup -s /bin/sh -h /

COPY --chown=myuser:mygroup /path/to/host/dir/ /path/to/container/dir

Создать изображение

docker build -t example .

Илисоздайте его с помощью пользовательского UID / GID:

docker build -t example --build-arg USER_ID=1234 --build-arg GROUP_ID=2345 .

и убедитесь, что файл chown'ed

docker run --rm example ls -la /path/to/container/dir

total 8
drwxr-xr-x    2 myuser   mygroup       4096 Dec 22 16:08 .
drwxr-xr-x    3 root     root          4096 Dec 22 16:08 ..
-rw-r--r--    1 myuser   mygroup          0 Dec 22 15:51 myfile

Убедитесь, что у него правильный uid / gid:

docker run --rm example ls -lan /path/to/container/dir

total 8
drwxr-xr-x    2 1234     2345          4096 Dec 22 16:08 .
drwxr-xr-x    3 0        0             4096 Dec 22 16:08 ..
-rw-r--r--    1 1234     2345             0 Dec 22 15:51 myfile

Примечание : существует открытый запрос на добавление этой функции: issue # 35018"Разрешить динамическое заполнение команды COPY --chown через ENVили ARG "

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