我已经在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
的值设置为文件内容的值?
我相信这可能是How to set environment variable into docker container using docker-compose的副本,但是该解决方案似乎对我没有任何改变。
答案 0 :(得分:3)
您可以在运行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的外壳中同一变量的值。
答案 1 :(得分:1)
可能的解决方案:
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
并像这样调用docker-compose:
listview = squish.waitForObject(ecusListView) #Returns a QVariant
model = object.convertTo(listview.model,"QObject")
maxcount = listview.count
myarray = []
for i in range(maxcount):
myarray.append(model.data(model.index(i, 0), 0))
很遗憾,当前无法在 environment:
- SSH_PRIVATE_KEY
中使用多行变量。
另一种可能性是:
SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa) docker-compose build