我如何处理docker访问共享文件读写中的已部署Spring Cloud应用程序的问题?

时间:2019-03-28 08:31:58

标签: spring-boot docker spring-cloud

我在docker中部署了spring cloud应用程序.spring cloud应用程序使用访问图片文件。当我通过dockerfile在docker中部署spring cloud应用程序时。在本地开发环境中,我可以访问图片文件。在docker中部署该应用程序时,它会投射错误。这表明Spring Cloud应用程序在主机上找不到该文件。我该怎么处理这个问题?

我尝试将主机图片文件复制到docker volumne路径。但这行不通。

我的应用程序yml文件中图片文件路径的主机是这样的。

originImgPath: /tmp/tcps/klanalyze/originImg
captchaImgPath: /tmp/tcps/klanalyze/captchaImg

保存在主机路径中的图片是这样的。

/tmp/tcps/klanalyze/originImg
/tmp/tcps/klanalyze/captchaImg

我的docker文件包是这样的。

FROM jdk-8u191:20190321

MAINTAINER beigai_liyang

VOLUME /tmp

ADD  target/klanalyze-gateway-0.0.1-SNAPSHOT.jar app.jar

RUN bash -c 'touch /app.jar'

EXPOSE 8888

ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

我的代码是这样的。

//read yml setting
@Autowired
private GatewayProperty gatewayProperty;

public void loadPicture(){
   ……
   //load file
   File file = new File(gatewayProperty.getOriginImgPath());
   ……
}

我的Docker版本是17.12.1-ce。

我的春季云版本是Finchley.SR1。

我的Spring引导版本是2.0.3.RELEASE。

我的主机是cent-os 7。

1 个答案:

答案 0 :(得分:0)

似乎您需要使用-v将主机直接安装到/ tmp卷。

docker run -v / tmp:/ tmp映像名称

关注点:

  1. “将主机图片文件复制到docker volumne路径”没有什么意义

  2. 在此处粘贴您的docker run命令,以便我们了解如何运行容器