小编典典

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

docker

我在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给出/.ssh/id_rsa而不是存储在内部的值。我听说在Dockerfile中执行此操作的问题是它仍然可以在将要推送的映像的一层中查看。

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

我相信这可能与[如何使用docker-compose将环境变量设置到docker容器中相同,但是该解决方案似乎并没有改变我。


阅读 454

收藏
2020-06-17

共1个答案

小编典典

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

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"

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

容器中变量的值取自运行Compose的外壳中相同变量的值。

2020-06-17