我正在尝试使用docker-compose文件从Shell脚本构建docker,并希望将凭据作为参数传递。 (该凭证将在Dockerfile中使用)。例如,在外壳文件中,$ {1}和$ {2}分别是用户名和密码。
在Dockerfile中,如果以下命令显示“用户名”,那么我会很高兴。
为了简单起见,下面的示例为$ {1} =用户名
RUN echo ${test}
在Shell脚本中,由于应使用docker-compose.yml,因此需要使用以下命令。我不想将凭据存储在yml文件中,想通过shell脚本传递。
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
我在下面尝试过,但是没有运气。空白。
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
有关信息,这是Docker版本信息。
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
答案 0 :(得分:0)
添加build-arg
-build-arg选项使用一个键和一个值。该命令是 https://docs.docker.com/compose/reference/build/对此进行了说明。正确的命令:
docker-compose -f docker-compose-el6.yml build --build-arg myArgument=myValue
要在shell上打印参数,请在Dockerfile中添加2行
ARG myArgument
RUN echo $myValue
Dockerfile参考在这里进行了解释 https://docs.docker.com/engine/reference/builder/#arg