在Docker

时间:2017-03-02 18:48:43

标签: docker spring-boot spring-cloud-config

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

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

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

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

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

我在〜/ .ssh中有一个配置文件,其中包含以下内容:

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

如果我通过SSH连接到正在运行的Docker容器并手动运行Git克隆,这一切都有效。但是,如果我在容器中启动Spring Boot应用程序并尝试从Spring Cloud Config中提取配置,我会在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中提取配置。有没有办法通过SSH转发使Spring Cloud Config在Docker中工作?

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

0 个答案:

没有答案