DockerFile и переменная окружения - PullRequest
0 голосов
/ 03 декабря 2018

В соответствии с этим: https://hub.docker.com/_/mysql/

Я могу установить корневой пароль MySQL с помощью:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Я предполагал, что MYSQL_ROOT_PASSWORD будет средойпеременная, которая устанавливается с помощью ARG (например, Получить значение переменной среды в Dockerfile ), однако, глядя на DockerFile (https://github.com/docker-library/mysql/blob/696fc899126ae00771b5d87bdadae836e704ae7d/8.0/Dockerfile), я не вижу этого ARG.

Итак, как устанавливается этот пароль root?

Ответы [ 2 ]

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

Позвольте мне немного пояснить параметры в Dockerfile.

ARG - доступно только при сборке образа Docker.Допустим, вы хотите сохранить в образе докера хеш-коммит вашего исходного кода.

ARG Commit

, чем вы создаете образ докера:

docker build -t someimage —build-arg Commit=<somehash>

ENV - значения, которые доступны для докеров и могут использоваться как часть команды RUN.

В реальном времени вы можете изменить переменную ENV или добавить новые переменные env, добавив ее в строку запуска:

docker run -e SOME_VAR=somevar someimage.

Надеюсь, это поможет вам.

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

На самом деле он используется в скрипте точки входа -
Ref - https://github.com/docker-library/mysql/blob/696fc899126ae00771b5d87bdadae836e704ae7d/8.0/docker-entrypoint.sh

Конфигурация точки входа в Dockerfile -

COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...