我有一个包含以下内容的Dockerfile
FROM eclipse-temurin:17-alpine
RUN apk update && apk add --no-cache curl gcompat
ENV REPO_USERNAME=username
ENV REPO_PASSWORD=password
# Create a directory for Puppeteer
RUN mkdir -p /puppeteer
RUN curl --user "$REPO_USERNAME:$REPO_PASSWORD" -o reqLoader-linux http://10.81.9.1/tools/puppeteer-v13/reqLoader-linux
RUN mv reqLoader-linux /puppeteer/reqLoader-linux
字符串
它工作正常,正如你看到我使用那里的用户名和密码,我想保存这些凭证在一个安全的地方,并能够访问他们从这个脚本。
我在git bash中使用.sh脚本运行此Dockerfile(win 11)此图像将在生产中的Linux环境中创建,我希望简单/最小的解决方案来实现这一点
我试着运行docker secret create my_secret ./credentials
,在credentials.json中,
{
"username" : "username",
"password" : "password"
}
型
在这种情况下,我得到
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
型
我是否应该初始化Swarm并按此方式运行?我阅读另一个可能解决方案是编写文件
我想象的解决方案应该是一个加密的文件,其中存储了凭证,只有docker在运行Dockerfile时才能看到它
1条答案
按热度按时间qybjjes11#
我能够通过执行以下步骤解决问题
1.我在与我的Dockerfile相同的级别创建了.netrc
1.我在.netrc文件
machine 10.81.9.1 login testusername password testpassword!
中添加了以下内容1.我修改了.sh文件,使用这个脚本
DOCKER_BUILDKIT=1 docker build --secret id=netrc,src=./.netrc -t $IMAGE:$TAG .
而不是旧的docker build . -t $IMAGE:$TAG
来运行Dockerfile1.我修改了Dockerfile,在第一行添加了
# syntax = docker/dockerfile:1.0-experimental
,然后使用RUN --mount=type=secret,id=netrc curl --netrc-file /run/secrets/netrc --output reqLoaderLinux http://10.81.9.1/tools/puppeteer-v13/reqLoader-linux
命令下载文件有用的资源solution,关于.netrc file