在Docker中使用Spring Cloud Config进行SSH转发

我将Spring Boot应用程序设置为Spring Cloud Config服务器,并从Spring Boot应用程序的application.yml中指定的Gitlab存储库中提取configuration。 我在Gitlab服务器上使用部署密钥。

这可以在我的〜/ .ssh目录中使用deploy key的私钥在本地运行。

我想在Docker中运行这个应用程序,我想使用SSH转发,而不是将〜/ .ssh中的私钥存储在Docker容器中。

我已经在Docker主机上安装了ssh-agent,并在docker-compose.yml中为容器configuration了以下内容:

volumes: - $SSH_AUTH_SOCK:/ssh-agent environment: - SSH_AUTH_SOCK=/ssh-agent 

在〜/ .ssh中有一个configuration文件,内容如下:

 Host mygitlabserver.com Hostname mygitlabserver.com StrictHostKeyChecking no ForwardAgent yes 

这一切工作,如果我SSH进入正在运行的Docker容器,并手动运行一个Git克隆。 但是,如果我在容器中启动Spring Boot应用程序并尝试从Spring Cloud Config中取出configuration,则Spring Boot应用程序日志中会出现此错误:

 java.lang.IllegalStateException: Cannot clone or checkout repository] with root cause com.jcraft.jsch.JSchException: Auth fail at com.jcraft.jsch.Session.connect 

如果我在Docker容器中的〜/ .ssh中添加私钥,而不是尝试使用转发,那么应用程序可以从Git中获取configuration。 有没有办法通过SSH转发让Spring Cloud Config在Docker中工作?

如果没有,有没有其他的方法来避免将私钥存储在正在运行的Docker容器中的文件系统的〜/ .ssh中?