如何在dockerfile中隐藏用户并传入curl命令

How to hide user and pass in curl command in dockerfile

我有一个 docker 文件,在最后一步中,我从 artifactory 下载了一个 WAR 文件,因此我可以在 webapps/ 目录的容器中使用它。

问题是我不想向用户显示 curl -u 命令的传递。如何在以下命令中隐藏用户和密码? docker 有没有办法把密码改成 hide/encrypt?

RUN curl -u user:pass -O "https://artifactory.xxxx.com:443/artifactory/api/api-0.0.1-SNAPSHOT.war"

您无法从 docker history 中隐藏 运行 命令的内容。

您应该在 Dockerfile 之外下载工件。执行 curl 命令然后执行 运行 docker build 命令的脚本可能会为您简化事情。除了不通过 docker history 公开凭据外,这还避免了将它们提交给源代码控制,即使您的 Artifactory 无法访问也可以构建图像,并简化了面向开发人员的序列,他们需要构建一个他们自己构建的临时图像。

您可以使用多阶段构建来实现轻量级映像,但您必须使用一个 docker 构建,而不是两个。就像这个单一的 Dockerfile:

FROM maven as build
(... Your app build....)
FROM tomcat
COPY --from=build artifact.war /dest/dir

第二个 FROM 之前的所有内容都会从生成的图像中丢弃,因此它将包含 Tomcat,而不是 Maven 和您复制的工件。