Docker 1.9 позволяет передавать аргументы в файл докера. См. Ссылку: https://docs.docker.com/engine/reference/builder/#arg
Как передать те же аргументы в docker-compose.yml?
Если возможно, также укажите пример.
Docker 1.9 позволяет передавать аргументы в файл докера. См. Ссылку: https://docs.docker.com/engine/reference/builder/#arg
Как передать те же аргументы в docker-compose.yml?
Если возможно, также укажите пример.
Эта функция была добавлена в Compose 1.6.
Ссылка: https://docs.docker.com/compose/compose-file/#args
services:
web:
build:
context: .
args:
FOO: foo
docker-compose version
, отображается 1.29.1, и на момент написания это последняя версия. 1,6?
- person volvox; 15.07.2021
Теперь docker-compose
поддерживает подстановку переменных.
Compose использует значения переменных из среды оболочки, в которой запущен docker-compose
. Например, предположим, что оболочка содержит POSTGRES_VERSION=9.3
, и вы указываете эту конфигурацию в своем docker-compose.yml
файле:
db:
image: "postgres:${POSTGRES_VERSION}"
Когда вы запускаете docker-compose up
с этой конфигурацией, Compose ищет переменную среды POSTGRES_VERSION
в оболочке и подставляет ее значение в. В этом примере Compose преобразует image
в postgres:9.3
перед запуском конфигурации.
docker-compose
не поддерживает передачу аргументов.
- person Hemerson Varela; 19.02.2016
docker-compose run
для передачи аргументов, поскольку аргумент должен быть передан нескольким контейнерам.
- person andho; 20.02.2017
${PLATFORM_VERSION:-v1.0.0}
всюду, и было бы неплохо просто поставить значение по умолчанию в одном месте.
- person weberc2; 05.09.2018
docker-compose.yml
файле. environment:\n PLATFORM_VERSION: "${PLATFORM_VERSION:-v1.0.0}"
. PS: \n
просто потому, что я не смог найти способ отформатировать многострочный блок кода в комментариях.
- person Sidney de Moraes; 29.03.2019
Теперь это можно сделать в docker-compose v2 + как часть объекта build
;
docker-compose.yml
version: '2'
services:
my_image_name:
build:
context: . #current dir as build context
args:
var1: 1
var2: c
См. докер создания документов.
В приведенном выше примере "var1" и "var2" будут отправлены в среду сборки.
Примечание: любые переменные env (указанные с помощью блока environment
), которые имеют то же имя, что и переменная (и) args
, переопределят эту переменную.
args
должны быть строчными? В документации и во всех примерах, которые я видел, используются клавиши нижнего регистра, но я не встречал упоминания о том, что это требуется.
- person pdoherty926; 31.08.2016
environment
не переопределяют переменные args
. Просто args
переменные доступны во время процесса сборки контейнера, но environment
переменных доступны, пока контейнер запущен.
- person Masood Khaari; 26.11.2018
Что-то добавить к этим ответам, что args
подбираются только при использовании docker-compose up --build
, а не при использовании docker-compose build
. Если вы хотите собирать и запускать в отдельные шаги, вам нужно использовать docker-compose build --build-arg YOUR_ENV_VAR=${YOUR_ENV_VAR}
или docker build --build-arg YOUR_ENV_VAR=${YOUR_ENV_VAR}