当前位置: 首页 > 知识库问答 >
问题:

如何实现maven项目的dockerize?又有多少种方法可以实现呢?

陶柏
2023-03-14

我是Docker的新手,不知道如何用maven运行java项目,尽管我读过很多文档,尝试过很多方法

  1. 是否应该使用DockerFile生成映像?
  2. 当使用DockerFile在主机中运行maven项目时,命令是什么?

共有1个答案

羊和光
2023-03-14
#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package

#
# Package stage
#
FROM openjdk:11-jre-slim
COPY --from=build /home/app/target/demo-0.0.1-SNAPSHOT.jar /usr/local/lib/demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/lib/demo.jar"]
    null
docker build -t demo .
$ docker run --rm -it demo:latest

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.3.RELEASE)

2019-02-22 17:18:57.835  INFO 1 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication v0.0.1-SNAPSHOT on f4e67677c9a9 with PID 1 (/usr/local/bin/demo.jar started by root in /)
2019-02-22 17:18:57.837  INFO 1 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2019-02-22 17:18:58.294  INFO 1 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 0.711 seconds (JVM running for 1.035)
    null
FROM maven:3.5-jdk-8 AS build  
COPY src /usr/src/app/src  
COPY pom.xml /usr/src/app  
RUN mvn -f /usr/src/app/pom.xml clean package

FROM gcr.io/distroless/java  
COPY --from=build /usr/src/app/target/helloworld-1.0.0-SNAPSHOT.jar /usr/app/helloworld-1.0.0-SNAPSHOT.jar  
EXPOSE 8080  
ENTRYPOINT ["java","-jar","/usr/app/helloworld-1.0.0-SNAPSHOT.jar"]  
    null

该映像可用于在构建时运行Maven,以创建编译后的应用程序,或者在容器中运行Maven构建,如以下示例所示。

以下命令在容器中运行Maven构建:

docker run -it --rm \
       -v "$(pwd)":/opt/maven \
       -w /opt/maven \
       maven:3.2-jdk-7 \
       mvn clean install

备注:

    null
docker run -d -p 8081:8081 --name nexus sonatype/nexus
<settings>
  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://nexus:8081/content/groups/public/</url>
    </mirror>
  </mirrors>
</settings>
docker run -it --rm \
       -v "$(pwd)":/opt/maven \
       -w /opt/maven \
       --link nexus:nexus \
       maven:3.2-jdk-7 \
       mvn -s settings.xml clean install

备注:

  • 在后台运行Nexus的一个优点是,可以通过管理URL对运行在本地容器中的Maven构建透明地管理其他第三方存储库。
 类似资料:
  • 本文向大家介绍js实现跨域的多种方法,包括了js实现跨域的多种方法的使用技巧和注意事项,需要的朋友参考一下 从域说起 域: 域是WIN2K网络系统的安全性边界。我们知道一个计算机网最基本的单元就是“域”,这一点不是WIN2K所独有的,但活动目录可以贯穿一个或多个域。在独立的计算机上,域即指计算机本身,一个域可以分布在多个物理位置上,同时一个物理位置又可以划分不同网段为不同的域,每个域都有自己的安全

  • 本文向大家介绍django项目中新增app的2种实现方法,包括了django项目中新增app的2种实现方法的使用技巧和注意事项,需要的朋友参考一下 1.在pycharm的工具栏找到 Tools,点击之后会有“Run manage.py task”选项,点击它之后,在pycharm下面会出现一个输入界面,在里面输入 “startapp appName(你的App名称)” 回车之后就可以在工程下面看到

  • 我有一个Spring Boot maven应用程序,我需要使用jib插件对其进行dockerize,并将注册表发送到azure容器注册表。注册表已设置并就绪,包括用户名、密码等。。。我的pom。xml如下所示: 当我运行命令“mvn compile jib: build”时,我得到以下输出: 基本映像在公共docker中心存储库中。当我运行docker拉...-我可以毫无问题地拉它。 我如何调整这

  • 本文向大家介绍PHP实现递归目录的5种方法,包括了PHP实现递归目录的5种方法的使用技巧和注意事项,需要的朋友参考一下 项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等。这不当前手下的项目就用到了这个,于是总结了几个循环创建目录的方法。 方法一:使用glob循环 方法二:使用dir && read循环 方法三:使用opendir && readdir循环  方法四:

  • 我已经在GitHub上从Google下载了最新的GCM示例。 它工作得很好,但是我不能让它在我自己的项目中工作。我已经得到了甜甜圈和消息"生成InstanceID令牌..." 我不理解他们示例中与类GcmSender的链接。 这是我的密码

  • 本文向大家介绍Java 多线程有几种实现方式?相关面试题,主要包含被问及Java 多线程有几种实现方式?时的应答技巧和注意事项,需要的朋友参考一下 有4种,分别是: 继承Thread类 实现Runnable接口 实现Callable接口通过FutureTask包装器来创建Thread线程 通过线程池创建线程,使用线程池接口ExecutorService结合Callable、Future实现有返回结