如何将下面的命令转换为docker-compose版本?
docker build -t xxx --build-arg SSH_PRV_KEY="$(cat ~/.ssh/id_rsa)" .
我在下面尝试了此块,但是它不起作用。请帮忙。谢谢。
xxx:
build:
context: .
dockerfile: Dockerfile
args:
SSH_PRV_KEY: "$(cat ~/.ssh/id_rsa)"
答案 0 :(得分:0)
docker-compose不会像这样隐藏shell代码。您可以这样操作:
xxx:
build:
context: .
dockerfile: Dockerfile
args:
SSH_PRV_KEY
现在,在运行docker-compose之前,导出您的SSH_PRV_KEY
环境变量:
export SSH_PRV_KEY="$(cat ~/.ssh/id_rsa)"
# now run docker-compose up as you normally do
然后SSH_PRV_KEY
将具有正确的值。
您需要考虑的两件事:
id_rsa
中有通行短语,则可能无法正常工作。此SSH_PRV_KEY
实际上可用于docker元数据,例如docker history
或images inspect
。为了解决这个问题,您应该研究多阶段构建https://docs.docker.com/develop/develop-images/multistage-build/。在构建步骤中,您可以使用该键执行所需的任何操作。然后,在最终图像中,无需声明SSH_PRV_KEY
,而只需复制前一图像的结果即可。一个更具体的示例,其中使用私钥安装依赖项
FROM based as build
ARG SSH_PRV_KEY
RUN echo "$SSH_PRV_KEY" > ~/.ssh/id_rsa
RUN npm install # this may need access to that rsa key
FROM node
COPY --from=builder node_modules node_modules
请注意,在第二张图片中,我们没有声明ARG
,因此我们不会公开它。