IDEA对Docker容器进行打包构建的两种方式

胸怀万里世界, 放眼无限未来。这篇文章主要讲述IDEA对Docker容器进行打包构建的两种方式相关的知识,希望能为你提供帮助。
使用idea一键式打包



要用到的插件docker-maven-plugin插件
一定是maven项目


方法1:不需要dockerfile,自动生成dockerfilevim pom.xml
< ?xml version="1.0" encoding="UTF-8"?>
< project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
< modelVersion> 4.0.0< /modelVersion>
< groupId> org.example< /groupId>
< artifactId> untitled< /artifactId>
< version> 1.0-SNAPSHOT< /version>
< properties>
< java.version> 1.8< /java.version>
< !-- 镜像 前缀姓名-->
< docker.image.prefix> guoweixin< /docker.image.prefix>
< /properties>
< build>
< plugins>
< plugin>
< groupId> org.springframework.boot< /groupId>
< artifactId> spring-boot-maven-plugin< /artifactId>
< version> 1.0.0< /version>
< /plugin>
< plugin>
< groupId> com.spotify< /groupId>
< artifactId> docker-maven-plugin< /artifactId>
< version> 1.0.0< /version>
< executions>
< execution>
< id> build-image< /id>
< phase> package< /phase>
< goals>
< goal> build< /goal>
< /goals>
< /execution>
< /executions>
< configuration>
< !-- 镜像名称guoweixin/exam-->
< imageName> cainiao/$project.artifactId< /imageName>
< !--指定标签-->
< imageTags>
< imageTag> latest< /imageTag>
< /imageTags>
< !-- 基础镜像jdk 1.8-->
< baseImage> java< /baseImage>
< !-- 制作者提供本人信息 -->
< maintainer> guoweixin guoweixin@aliyun.com< /maintainer>
< !--切换到/ROOT目录 ,下面jar包放在哪里了,就要去哪里-->
< workdir> /ROOT< /workdir>
< cmd> ["java", "-version"]< /cmd>
< !-- < entryPoint> ["java", "-jar", "$project.build.finalName.jar"]< /entryPoint>
-->
< entryPoint> ["bash", "-c", "tail -f /dev/null"]< /entryPoint>
< !-- 指定 Dockerfile 路径
< dockerDirectory> $project.basedir/src/main/docker< /dockerDirectory>
-->
< !--指定远程 docker api地址-->
< dockerHost> http://172.20.3.136:2375< /dockerHost>
< !-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
< resources>
< resource>
< targetPath> /< /targetPath>
< !--用于指定需要复制的根目录,$project.build.directory表示target目录,就是最终放入镜像的地方-->
< directory> $project.build.directory< /directory>
< !--用于指定需要复制的文件。$project.build.finalName.jar指的是打包后的jar包文件。-->
< include> $project.build.finalName.jar< /include>
< /resource>
< /resources>
< /configuration>
< /plugin>
< /plugins>
< /build>
< /project>
复制代码

执行:1.clean(clean是双击)
2.package(是双击)
3.查看首先查看我们的jar包生成

第二我们看我们的镜像生成

第三运行我们的镜像


【IDEA对Docker容器进行打包构建的两种方式】 apply --> Run 查看容器

开发人员在打包前要更改的配置1.pom.xml
< imageTag> < /imageTag>
这个标签里面写的是版本号
复制代码

2.项目对应的配置文件更改
环境不同,对应的数据库等连接配置文件不同,要进行相应的更改,如果用的是apollo,nacos等配置中心,只需更改相应的参数
复制代码

3.经过上面的运行测试后,更改为线上配置文件,然后clean,package4.推送镜像

方式二:自己写dockerfile其实就是把如下参数的注释去掉,然后写上自己dockerfile的位置,其他配置类似dockerfile的都删掉
< ?xml version="1.0" encoding="UTF-8"?>
< project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
< modelVersion> 4.0.0< /modelVersion>
< groupId> org.example< /groupId>
< artifactId> untitled3< /artifactId>
< version> 1.0-SNAPSHOT< /version>
< properties>
< java.version> 1.8< /java.version>
< docker.image.prefix> demo< /docker.image.prefix>
< /properties>
< build>
< plugins>
< plugin>
< groupId> org.springframework.boot< /groupId>
< artifactId> spring-boot-maven-plugin< /artifactId>
< version> 1.0.0< /version>
< /plugin>
< plugin>
< groupId> com.spotify< /groupId>
< artifactId> docker-maven-plugin< /artifactId>
< version> 1.0.0< /version>
< executions>
< execution>
< id> build-image< /id>
< phase> package< /phase>
< goals>
< goal> build< /goal>
< /goals>
< /execution>
< /executions>
< configuration>
< !-- 镜像名称guoweixin/exam-->
< imageName> cainiao/$project.artifactId< /imageName>
< !--指定标签-->
< imageTags>
< imageTag> 3.0< /imageTag>
< /imageTags>
< dockerDirectory> $project.basedir/< /dockerDirectory>
< dockerHost> http://172.20.3.136:2375< /dockerHost>
< /configuration>
< /plugin>
< /plugins>
< /build>
复制代码

新建Dockerfile文件注意要在项目的根目录下新建Dockerfile文件
FROM java
MAINTAINER guoweixin guoweixin@aliyun.com
WORKDIR /ROOT
ADD /ROOT/untitled3-1.0-SNAPSHOT.jar /ROOT/
RUN echo "hello world" > /ROOT/lin.txt
ENTRYPOINT ["bash", "-c", "tail -f /dev/null"]
CMD ["java", "-version"]
复制代码

打包和运行的步骤和上面一样

来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    推荐阅读