我在对包含知识库的 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
修复者
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