Как определить build-args в docker-compose? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть следующий файл docker-compose

version: '3'
services:
    node1:
            build: node1
            image: node1
            container_name: node1

    node2:
            build: node2
            image: node2
            container_name: node2

Я могу построить оба изображения и запустить их с помощью одной команды

docker-compose up -d --build

Но я бынравится использовать build-args на билдах.Оригинальный сценарий сборки изображения вне области компоновки выглядит примерно так:

#!/bin/sh
docker build \
--build-arg ADMIN_USERNNAME_1=weblogic \
--build-arg ADMIN_PASSWORD_1=weblogic1 \
--build-arg ADMIN_NAME_1=admin \
--build-arg ...
--build-arg ... \
-t test/foo .

Оба изображения будут использовать аргументы сборки с тем же именем, но с разным значением.Кроме того, поскольку существуют десятки аргументов сборки, было бы удобно хранить их в файле свойств сборки конкретного сервиса compose.Возможно ли это с помощью docker-compose?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вы можете указать аргументы непосредственно в файле docker-compose:

node1:
    build: node1
        args:
            ADMIN_USERNNAME: weblogic1
            ADMIN_PASSWORD: weblogic1
            ADMIN_NAME: admin1
    image: node1
    container_name: node1

Подробнее см. В официальных документах .

0 голосов
/ 07 июня 2018

Вы можете определить свой args с помощью команды сборки docker-compose.

Пример Dockerfile:

FROM nginx:1.13

RUN apt-get -y update && apt-get install -y \
    apache2-utils && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

ARG username
ARG password

RUN htpasswd -bc /etc/nginx/.htpasswd $username $password

docker-compose file:

version: '3'
services:
  node1:
     build: ./dir

./dir содержит Dockerfile, и я собираю эту команду:

docker-compose build --build-arg username="my-user" --build-arg password="my-pass"

Я уже вижу:

Step 5/5 : RUN htpasswd -bc /etc/nginx/.htpasswd $username $password
 ---> Running in 80735195e35d
Adding password for user my-user
 ---> c52c92556825

Я поднимаю свой стек:

docker-compose up -d

Теперь я могу проверить внутри контейнера nginx и мое имя пользователя и (зашифрованный) парольтам:

docker@default:~/test$ docker exec -it test_node1_1 bash
root@208e4d75e2bd:/# cat /etc/nginx/.htpasswd
my-user:$apr1$qg4I/5RO$KMaOPvjbnKdZH37z2WYfe1

Используя этот метод, вы можете передать build args в ваш docker-compose стек.

...