对 Java Web 应用程序进行 Docker 化并包含知识库的问题

问题描述 投票:0回答:1

我在对包含知识库的 Java Web 应用程序进行 Docker 化时遇到问题。知识库存储在我的项目根目录的knowledge-repo文件夹中。应用程序在本地成功运行,但是当我使用 Docker 部署它时,我遇到了文件knowledge-repo/config/regex_template.yaml 的 java.io.FileNotFoundException。

这是application.yaml的相关部分

knowledge-repo:
  path: knowledge-repo    

这是我的 Dockerfile 的片段:

FROM tomcat:jdk21
COPY "knowledge-repo" /usr/local/tomcat/webapps/spec/knowledge-repo
WORKDIR /usr/local/tomcat/webapps/temp
COPY ./warfile/*.war .
RUN jar -xf *.war
RUN mv /usr/local/tomcat/webapps/temp/ 
 /usr/local/tomcat/webapps/spec
RUN rm -rf /usr/local/tomcat/webapps/temp
COPY ./dist /usr/local/tomcat/webapps/ROOT/    

尽管在 Docker 映像中包含 Knowledge-repo 文件夹,但应用程序无法找到 Knowledge-repo/config/regex_template.yaml 文件,从而导致 java.io.FileNotFoundException。(我认为这就是 Knowledge-存储库应该是。

到目前为止,我已经尝试了 3 个位置来复制知识库,但没有成功

COPY "knowledge-repo" /usr/local/tomcat/webapps/spec/knowledge-repo
COPY "knowledge-repo" /usr/local/tomcat/webapps/knowledge-repo
COPY "knowledge-repo" /knowledge-repo
java spring-boot docker tomcat
1个回答
0
投票

修复者

FROM tomcat:jdk21
WORKDIR /usr/local/tomcat/webapps/temp
COPY ./warfile/*.war .
RUN jar -xf *.war
RUN mkdir /usr/local/tomcat/webapps/spec
RUN mv /usr/local/tomcat/webapps/temp/* /usr/local/tomcat/webapps/spec
COPY ./knowledge-repo /usr/local/tomcat/webapps/spec/knowledge-repo
RUN rm -rf /usr/local/tomcat/webapps/temp
RUN rm -rf /usr/local/tomcat/webapps/spec/*.war
COPY ./dist /usr/local/tomcat/webapps/ROOT/
WORKDIR /usr/local/tomcat/webapps/spec
© www.soinside.com 2019 - 2024. All rights reserved.