Docker 1.9 дозволяє передавати аргументи у файл docker. Див. Посилання: https://docs.docker.com/engine/reference/builder/#arg
Як я можу передати ті самі аргументи в docker-compose.yml?
Будь ласка, наведіть приклад, якщо це можливо.
Docker 1.9 дозволяє передавати аргументи у файл docker. Див. Посилання: 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
підтримує заміну змінних.
Compose використовує значення змінних із середовища оболонки, в якому docker-compose
виконується. Наприклад, припустимо, що оболонка містить, POSTGRES_VERSION=9.3
і ви надаєте цю конфігурацію у своєму docker-compose.yml
файлі:
db:
image: "postgres:${POSTGRES_VERSION}"
Коли ви запускаєте docker-compose up
з цією конфігурацією, Compose шукає POSTGRES_VERSION
змінну середовища в оболонці та підставляє її значення дюймом. У цьому прикладі Compose вирішує значення image
to postgres:9.3
перед запуском конфігурації.
docker-compose
не підтримує передавання аргументів.
docker-compose run
для передачі аргументів, оскільки аргумент повинен бути переданий у кілька контейнерів.
docker-compose.yml
файлі. environment:\n PLATFORM_VERSION: "${PLATFORM_VERSION:-v1.0.0}"
. PS: \n
саме тому, що я не міг знайти спосіб форматування багаторядкового коду в коментарях.
Тепер це можна зробити з 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
клавіші мають бути малими? У документах та всіх прикладах, які я бачив, використовуються малі клавіші, але я не бачив жодної згадки про те, що це потрібно .
environment
блоці не замінюють args
змінні. Просто args
змінні доступні під час процесу побудови контейнера , але environment
змінні доступні під час запуску контейнера .