- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对一些 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一无所知
最佳答案
看看你的代码,这是我所能看到的:
.
)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
。所以你这样做:
.war
.war
放入Dockerfile
目录COPY app_name.war
到容器的文件系统关于java - 如何将 tomcat 应用程序 Docker 化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302736/
我是一名优秀的程序员,十分优秀!