Передать параметр из оболочки в docker-compose / docker - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь собрать докер из сценария Shell, используя файл docker-compose, и хотел бы передать учетные данные в качестве параметра. (Учетные данные будут использоваться в Dockerfile). Например, из файла оболочки $ {1} и $ {2} - это имя пользователя и пароль соответственно.

Если в приведенной ниже команде отображается «имя пользователя», то в Dockerfile я буду счастлив. Для упрощения приведенных ниже примеров $ {1} = username

RUN echo ${test}

В сценарии Shell необходимо использовать указанную ниже команду, поскольку следует использовать docker-compose.yml. Я не хочу хранить учетные данные в файле yml, хотел бы передать через сценарий оболочки.

docker-compose -f docker-compose-el6.yml build --force-rm --pull
docker-compose -f docker-compose-el6.yml up -d --force-recreate
docker-compose -f docker-compose-el6.yml run -T --rm builder-el6 testmain.py

Я попробовал ниже, но не повезло. BLANK.
1) добавить build-arg

docker-compose -f docker-compose-el6.yml build --build-arg test=username --force-rm --pull

Получите следующую ошибку

Services are built once and then tagged as `project_service`,
e.g. `composetest_db`. If you change a service's `Dockerfile` or the
contents of its build directory, you can run `docker-compose build` to rebuild it.

Usage: build [options] [SERVICE...]

Options:
    --force-rm  Always remove intermediate containers.
    --no-cache  Do not use cache when building the image.
    --pull      Always attempt to pull a newer version of the image.

2) добавить переменную окружения

$SUDO test=username docker-compose -f docker-compose-el6.yml up -d --force-recreate

3) добавить переменную окружения - другой способ

export test=username
$SUDO docker-compose -f docker-compose-el6.yml up -d --force-recreate

4) добавить переменную окружения - еще один способ

$SUDO docker-compose -f docker-compose-el6.yml run -T -e test=username --rm builder-el6 testmain.py

Для информации, здесь есть информация о версии докера.

Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d
OS/Arch (server): linux/amd64

1 Ответ

0 голосов
/ 26 июня 2019
  1. add build-arg

    Опция --build-arg использует ключ и значение.Здесь поясняется команда https://docs.docker.com/compose/reference/build/. Правильная команда:

    docker-compose -f docker-compose-el6.yml build --build-arg myArgument=myValue
    

    Чтобы напечатать аргумент оболочки, добавьте в Dockerfile 2 строки

    ARG myArgument
    RUN echo $myValue
    

    Ссылка на Dockerfile объясняет, что здесьhttps://docs.docker.com/engine/reference/builder/#arg

...