【发布时间】:2018-11-16 22:59:50
【问题描述】:
我有以下 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。 compose 范围之外的图像的原始构建脚本看起来像这样
#!/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 可以吗?
【问题讨论】:
-
对后来人的警告:对于密码,您可以考虑使用秘密管理器(Vault、k8s 秘密、aws sms、docker swarm 秘密)而不是构建 arg 以避免安全漏洞。构建时 arg 将烘焙图像中的凭据,这意味着任何具有拉取访问权限的人都可以读取它。避免在构建时使用凭据。
-
关于安全性的非常重要的说明,非常感谢。这是一个解决方案:pythonspeed.com/articles/build-secrets-docker-compose
标签: docker docker-compose containers