Docker-compose - 设置非文字的环境变量

2023-12-01

我已经在 Docker 容器中设置了 Jenkins,并且正在尝试使用该服务器访问我的私有 Bitbucket 存储库。我需要将我的 SSH 密钥复制到该容器中,以便 Bitbucket 识别它,然后我可以让我的 Jenkins 服务器访问该存储库。

我的 docker-compose.yml 文件中有以下内容:

services:
  jenkins:
    build: .
    volumes:
      - jenkins-data:/var/jenkins_home
    environment:
      - SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa)
    ports:
      - "8080:8080"
      - "50000:50000"

volumes:
  jenkins-data:

然而,echo $SSH_PRIVATE_KEY gives /.ssh/id_rsa从字面上看,而不是存储在其中的值。我听说在 Dockerfile 中执行此操作的问题是,仍然可以在将推送的图像的某一层中查看它。

我的问题是如何设置SSH_PRIVATE_KEY我的文件内容的值?

我相信这可能是重复的如何使用 docker-compose 将环境变量设置到 docker 容器中然而,这个解决方案似乎并没有给我带来任何改变。


您可以在运行 compose 的 shell 中创建一个环境变量:

export SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa)

然后在您的撰写中使用它,例如:

services:
  jenkins:
    build: .
    volumes:
      - jenkins-data:/var/jenkins_home
    environment:
      - SSH_PRIVATE_KEY
    ports:
      - "8080:8080"
      - "50000:50000"

它应该从 shell 环境中获取容器的环境变量值,如docs :

容器中变量的值取自运行 Compose 的 shell 中同一变量的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker-compose - 设置非文字的环境变量 的相关文章

随机推荐