【问题标题】:How I can deal with the problem of deployed spring cloud application in docker accessing shared files write and read?我如何处理在docker中部署spring cloud应用程序访问共享文件读写的问题?
【发布时间】:2019-08-18 23:01:04
【问题描述】:

我在docker中部署spring cloud应用程序。spring cloud应用程序使用访问图片文件。当我通过dockerfile在docker中部署spring cloud应用程序时。在本地开发环境下,可以访问图片文件。在docker中部署应用时,出现bug,显示spring cloud应用在宿主机上找不到文件。我需要怎样处理这个问题?

我尝试将主机图片文件复制到 docker 卷路径。但它不能工作。

我的应用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。

我的 spring cloud 版本是 Finchley.SR1。

我的 Spring Boot 版本是 2.0.3.RELEASE。

我的主机是cent-os 7。

【问题讨论】:

    标签: spring-boot docker spring-cloud


    【解决方案1】:

    看来您需要使用 -v 将主机直接挂载到 /tmp 卷。

    docker run -v /tmp:/tmp image_name

    关注点:

    1. “将主机图片文件复制到docker卷路径”不是很有意义

    2. 在此处输入您的 docker run 命令,以便我们查看您是如何运行容器的

    【讨论】:

    • 谢谢,今天没有工作。我按照您的方法处理问题。它有效。
    猜你喜欢
    • 2023-02-03
    • 2019-08-20
    • 2022-01-01
    • 1970-01-01
    • 2021-04-01
    • 2023-04-10
    • 1970-01-01
    • 2020-01-09
    • 2020-08-28
    相关资源
    最近更新 更多