gpt4 book ai didi

java - 如何将 tomcat 应用程序 Docker 化

转载 作者:行者123 更新时间:2023-11-28 21:54:29 25 4
gpt4 key购买 nike

我正在尝试对一些 Tomcat 应用程序进行 docker 化,但我之前从未接触过 Java 应用程序,因此缺乏理解使得我很难理解我应该做什么。

到目前为止,我有这个,但它不起作用,如果它也是正确的路径,我也不知道

FROM tomcat:6

ENV APP_ROOT /app_name

RUN apt-get update && apt-get install -y default-jdk

COPY . $APP_ROOT/
WORKDIR $APP_ROOT

RUN jar -cvf app_name.war *

# this fail for some reason, when I do `ls` the file is there but if fail to copy it
COPY app_name.war $CATALINA_BASE/webapps/app_name.war

我只是在循环讨论这个问题,因为我不明白而且 Google 搜索对我帮助不大(我不知道怎么问)。

我应该在构建中使用 jar 命令吗?如果没有,我想我必须在本地构建它并确保 .war 在那里,对吗?!

如何使用 Tomcat 构建 Java 应用程序?以及如何与 Docker 集成?

抱歉太笼统了,但我对Java一无所知

最佳答案

看看你的代码,这是我所能看到的:

  • 您在当前目录中存储了一些 java 文件 (.)
  • 当您调用 COPY 时,您将所有这些内容复制到 /app_name
  • 您在文件上创建一个.war

有一些事情需要注意,首先是 app_name.war 不在主机磁盘上,它目前在 docker 文件系统中。这意味着您不能COPY .war

你真正想要的是:RUN cp app_name.war $CATALINA_BASE/webapps/app_name.war

这看起来像下面这样:Dockerfile

FROM tomcat:6
ENV APP_ROOT /app_name
RUN apt-get update && apt-get install -y default-jdk
COPY . $APP_ROOT/
WORKDIR $APP_ROOT
RUN jar -cvf app_name.war *
RUN cp app_name.war $CATALINA_BASE/webapps/app_name.war

添加 docker COPY在这里引用,因为它详细解释了命令。制作一个名为 provision.sh 的脚本也可能对您有所帮助,然后执行如下操作:

COPY provision.sh /tmp/provision.sh
RUN sh /tmp/provision.sh

这样你就可以把你所有的构建、配置和其他放在一个你可以在本地测试的脚本中(如果有帮助的话再次)

编辑:添加关于本地构建和复制到 dockerfile 的提及

您可以在您的机器上构建.war,使用COPY 将它放到机器上。Dockerfile

FROM tomcat:6
ENV APP_ROOT /app_name
RUN apt-get update && apt-get install -y default-jdk

COPY app_name.war $CATALINA_BASE/webapps/app_name.war
WORKDIR $APP_ROOT

上面复制了文件app_name.war,然后将它添加到容器的文件系统路径$CATALINA_BASE/webapps/app_name.war。所以你这样做:

  1. 在你的机器上用java构建.war
  2. .war放入Dockerfile目录
  3. COPY app_name.war 到容器的文件系统

关于java - 如何将 tomcat 应用程序 Docker 化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com