gpt4 book ai didi

java - 如何为 JAVA Web 应用程序构建 Docker 容器

转载 作者:行者123 更新时间:2023-11-30 10:54:39 25 4
gpt4 key购买 nike

我正在尝试使用 Docker 构建一个 JAVA 网络应用程序。我正在制作一个 docker 容器来部署和运行应用程序。我是初学者。所以我从 Java 应用程序 (jar) 的小型 POC 开始,它运行良好。我对 JAVA web 应用程序 (war) 进行了一些更改,并为该项目创建了一个 Dockerfile,如下所示:

    Dockerfile
---------------------------------------------------
FROM java:8

RUN apt-get update
RUN apt-get install -y maven

WORKDIR /code
ADD pom.xml /code/pom.xml
ADD src/main/webapp/WEB-INF/web.xml /codes/rc/main/webapp/WEB-INF/web.xml
RUN ["mvn", "dependency:resolve"]

ADD src /code/src
RUN ["mvn", "package"]
CMD ["usr/lib/jvm/java-8-openjdk-amd64/bin/java", "-war", "target/techpoint.war"]
----------------------------------------------------

构建成功但是当我运行应用程序时 - 它说“无法识别的选项:-war | 错误:无法创建 Java 虚拟机 | 错误:发生致命异常。程序将退出”当我用“-jar”替换“-war”时 - 它说“没有主要 list 属性,在 target/myapp.war 中”

有人能告诉我如何使 JAVA web 应用程序(war)与 Docker 部署过程兼容。这意味着实际的 Dockerfile(带有命令)应该是什么才能构建和运行应用程序?

最佳答案

您需要一个 Web 服务器或应用程序服务器容器,如 tomcat 或 Jboss(以及许多其他容器)来部署和运行基于 Java 的 Web 应用程序。您的“techpoint.war”文件需要复制到特定文件夹,具体取决于每个 Web 服务器。例如,如果您使用的是 Tomcat,则可以将其复制到/webapps 文件夹。 Tomcat 将提取并部署 war 文件。您可以将以下内容添加到您的 DockerFile。

FROM tomcat:8.5.11-jre8
COPY /<war_file_location>/techpoint.war /usr/local/tomcat/webapps/techpoint.war

您可以使用 docker build 命令构建镜像并从创建的镜像启动容器。

docker build -t techpoint.
docker run -it --rm -p 8091:8080 techpoint

现在 Tomcat 将提取并部署您的 war 文件。如何访问已部署的应用程序取决于您的应用程序的 webroot。例如,

http://<ip_address>:8091/techpoint/index.html

关于java - 如何为 JAVA Web 应用程序构建 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570718/

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