如何/在何处保存要从Dockerfile使用的凭据

41zrol4v  于 2023-11-17  发布在  Docker
关注(0)|答案(1)|浏览(173)

我有一个包含以下内容的Dockerfile

  1. FROM eclipse-temurin:17-alpine
  2. RUN apk update && apk add --no-cache curl gcompat
  3. ENV REPO_USERNAME=username
  4. ENV REPO_PASSWORD=password
  5. # Create a directory for Puppeteer
  6. RUN mkdir -p /puppeteer
  7. RUN curl --user "$REPO_USERNAME:$REPO_PASSWORD" -o reqLoader-linux http://10.81.9.1/tools/puppeteer-v13/reqLoader-linux
  8. RUN mv reqLoader-linux /puppeteer/reqLoader-linux

字符串
它工作正常,正如你看到我使用那里的用户名和密码,我想保存这些凭证在一个安全的地方,并能够访问他们从这个脚本。
我在git bash中使用.sh脚本运行此Dockerfile(win 11)此图像将在生产中的Linux环境中创建,我希望简单/最小的解决方案来实现这一点
我试着运行docker secret create my_secret ./credentials,在credentials.json中,

  1. {
  2. "username" : "username",
  3. "password" : "password"
  4. }


在这种情况下,我得到

  1. 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时才能看到它

qybjjes1

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来运行Dockerfile
1.我修改了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

相关问题