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

Posted 明镜清玄子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA对Docker容器进行打包构建的两种方式相关的知识,希望对你有一定的参考价值。

使用idea一键式打包


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


方法1:不需要dockerfile,自动生成dockerfile

vim 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是双击)

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

2.package(是双击)

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

3.查看

首先查看我们的jar包生成

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

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

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

第三运行我们的镜像

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

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

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

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

开发人员在打包前要更改的配置

1.pom.xml
<imageTag></imageTag>
这个标签里面写的是版本号
复制代码
2.项目对应的配置文件更改
环境不同,对应的数据库等连接配置文件不同,要进行相应的更改,如果用的是apollo,nacos等配置中心,只需更改相应的参数
复制代码
3.经过上面的运行测试后,更改为线上配置文件,然后clean,package
4.推送镜像

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

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

方式二:自己写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"]
复制代码
打包和运行的步骤和上面一样


来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以上是关于IDEA对Docker容器进行打包构建的两种方式的主要内容,如果未能解决你的问题,请参考以下文章

docker打包 commit和Dockerfile

docker打包 commit和Dockerfile

04 Docker 制作自定义镜像包

Docker二

docker容器实现数据持久化的两种方式及其区别

Docker 一键打包微服务