使用maven插件构建docker镜像、上传镜像

一、添加maven插件

在pom.xml文件 中添加docker的插件。

<plugins>
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.13</version>
				<configuration>
					<imageName>bestweiwei/demo:1.0</imageName>
					<baseImage>openjdk:8</baseImage>
					<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
					<serverId>docker-hub</serverId>
				</configuration>
			</plugin>
</plugins>

imageName:是指定镜像名称,前面bestweiwei是我的dockerhub仓库名,demo是镜像名称,1.0是版本。
baseImage:用于指定基础镜像。
entryPoint:就是Dockerfile文件里的指令一样的意思,也是容器运行之后要执行的命令。
directory:用户指定需要复制的根目录。
include:用于指定需要复制的文件。
然后执行命令 mvn clean package docker:build 等待运行完成,镜像就构建完成了。也可以运行idea的右侧的maven按钮。

二、插件读取Dockerfile文件进行build镜像

首先在项目的根目录创建一个Dockerfile文件,在哪创建都一样,只不过需要指定目录。填入以下内容

FROM openjdk:8
ADD ["demo-0.0.1-SNAPSHOT.jar","demo.jar"]
EXPOSE :8080
ENTRYPOINT ["java","-jar","/demo.jar"]

修改下pom.xml,添加一个<dockerDirectory>${project.basedir}</dockerDirectory> ,删除baseImageentryPoint,因为插件会读取Dockerfile文件的配置,如果Dockerfile不是在根目录,${project.basedir}后面还需要加上你的Dockerfile文件的路径。

在这里插入图片描述

三、推送镜像

首先去maven的配置文件setting.xml中加入一段配置。

 <servers>
    <server>
      <id>my-docker</id>
      <username>dockerhub的用户名</username>
      <password>dockerhub的登录密码</password>
      <configuration>
        <email>dockerhub的绑定邮箱</email>
      </configuration>
    </server>
  </servers>

然后在pom.xml文件中修改docker插件的配置,在其中加上<serverId>my-docker</serverId>
如图:
在这里插入图片描述

然后执行命令 mvn clean package docker:build -DpushImage 等待push。点击右边的push也行。

The push refers to repository [docker.io/bestweiwei/demo]
162e8397570c: Pushed 
2ee490fbc316: Layer already exists 
b18043518924: Layer already exists 
9a11244a7e74: Layer already exists 
5f3a5adb8e97: Layer already exists 
73bfa217d66f: Layer already exists 
91ecdd7165d3: Layer already exists 
e4b20fcc48f4: Layer already exists 
1.0: digest: sha256:3c525df2f92da221d7b78d947570942d7d20a4441d007a86fb1f5795779fdb96 size: 2007

已经存在的是我已经push过一次了。这样的就是push成功了,然后打开看一下。

搞定。

发布了41 篇原创文章 · 获赞 9 · 访问量 2530

猜你喜欢

转载自blog.csdn.net/weiwei_six/article/details/103721047
今日推荐