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 вирішує значення imageto 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змінні доступні під час запуску контейнера .