Вам необходимо определить значения ARG и ENV .
ARG
также известны как build-time
переменные. Они доступны только с момента, когда они 'объявлены' в Dockerfile
с инструкцией ARG
, до того момента, когда образ будет построен.
ENV
переменные также доступны во время сборки, как только вы вводите их с помощью инструкции ENV
.
Вот пример Dockerfile
, как для значений по умолчанию, так и без них:
ARG some_variable
# or with a hard-coded default:
#ARG some_variable=default_value
RUN echo "Oh dang look at that $some_variable"
При создании образа Docker из командной строки вы можете установить значения ARG
, используя –build-arg
:
$ docker build --build-arg some_variable=a_value
Выполнение этой команды с указанным выше Dockerfile
приведет к печати следующей строки (среди прочих):
Oh dang look at that a_value
Вот основной Dockerfile, использующий жестко заданные ENV
значения по умолчанию:
# no default value
ENV blablabla
# a default value
ENV foo /bar
# or ENV foo=/bar
# ENV values can be used during the build
ADD . $foo
# or ADD . ${foo}
# translates to: ADD . /bar
А вот пример Dockerfile, использующего динамические значения env при сборке:
# expect a build-time variable
ARG A_VARIABLE
# use the value to set the ENV var default
ENV an_env_var=$A_VARIABLE
# if not overridden, that value of an_env_var will be available to your containers!
Если вы используете docker-compose, вы можете установить его в файле ( ссылка ):
версия: '3'
services:
php:
image: my_php
environment:
- MY_NEWRELIC_KEY=keykey
EDIT :
Вы можете указать файл для чтения значений.
Файл выше называется env_file (имя произвольное) и находится в текущем каталоге. Вы можете сослаться на имя файла, которое анализируется для извлечения переменных окружения для установки:
$ docker run --env-file=env_file php env
В файлах docker-compose.yml мы просто ссылаемся на файл env_file и Docker
анализирует его для установки переменных.
version: '3'
services:
php:
image: php
env_file: env_file