Docker 学习(七) 使用 Maven 插件构建 Docker 镜像
2020-01-14 12:51
786 查看
文章目录
跟随书中,使用 Spotify 公司开发的 Maven 插件。
GitHub 地址:https://github.com/spotify/docker-maven-plugin#the-future-of-docker-maven-plugin
快速入门
- 在 pom 文件中添加:
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <configuration> <!-- 指定镜像名称 --> <imageName>yhcm/microservice-discovery-eureka:${version}</imageName> <!-- 指定基础镜像,类似Dockerfile 的 FROM --> <baseImage>java</baseImage> <!-- 类似于Dockerfile ENTRYPOINT 指令 --> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <!-- copy the service's jar file from target into the root directory of the image --> <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>
- 执行 maven 命令,构建 Docker 镜像。
或者是直接执行命令:
mvn clean package docker:build
因为这一步会构建成镜像,需要在本地装有 Docker 。默认的虚拟机就是 default 虚拟机。因为需要下载基础的 Java 镜像,所以请配置好镜像加速,避免加速下载失败。
- 查看刚刚构建的镜像
- 启动容器
docker run -d -p 8761:8761 yhcm/microservice-discovery-eureka:0.0.1-SNAPSHOT
- 访问测试
插件读取 Dockerfile 构建
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <configuration> <!-- 指定镜像名称 --> <imageName>yhcm/microservice-discovery-eureka:${version}</imageName> <!-- 指定 Dockerfile 的位置 --> <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory> <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>
简单点来说就是,事先准备好 Dockerfile 然后在配置中指定 Dockfile 的地址就可以了。实际上之前的方式也是插件生成了一个 Dockerfile 之后来构建。
将插件绑定在某个 phase 执行
这个的意思就是,在执行
mvn clean package或者是其他 Maven 命令的时候顺带执行插件 goal。
phase 和 goal 可以这样理解:maven 命令格式是 mvn phase:goal,例如 mvn package docker:build。那么 package 和 docker 都是 phase ,build 则是 goal。
添加配置:
<plugin> ... <configuration> ... </configuration> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> </plugin>
推送镜像
配置每次构建完成之后推送镜像到 Docker Hub 上。
修改 maven 的配置文件 settings.xml,添加以下配置:
<servers> <!-- docker相关配置 --> <server> <id>docker-hub</id> <username>你的 Docker Hub 用户名</username> <password>Docker Hub 的密码</password> <configuration> <email>邮箱</email> </configuration> </server> </servers>
然后在微服务的 pom.xml 中新增配置:
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <configuration> ... <!-- 与刚刚配置的maven配置文件中的settings.xml中的 server.id 一致 --> <serverId>docker-hub</serverId> </configuration> ... </plugin>
然后命令:
mvn clean package docker:build -DpushImage
然后就完成了镜像的推送。如果想要推送到私有的镜像仓库,和之前一样,修改标签即可
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- Docker学习--本地springboot项目使用Maven插件构建Docker镜像并自动上传到linux服务器docker私有仓库
- Docker与微服务-使用Maven插件构建Docker镜像
- 使用maven插件构建docker镜像
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- 使用Maven 插件构建docker 镜像和推送仓库
- Docker系列教程12-使用Maven插件构建Docker镜像
- 使用maven插件构建微服务的Docker镜像
- 1.7 Docker与微服务-使用Maven插件构建Docker镜像
- Docker使用 Maven 插件构建镜像的方法
- 浅谈使用Maven插件构建Docker镜像的方法
- 使用Maven插件构建Docker镜像
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- Docker学习6 - 使用Dockerfile构建镜像
- 微服务部署之Maven插件构建Docker镜像
- Docker Maven插件本地构建镜像发布至远程服务器
- docker学习笔记(六)使用Dockerfile构建镜像
- docker学习笔记4.1-使用Dockerfile文件构建镜像
- Docker学习笔记-- 如何使用Dockerfile构建镜像
- 使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器(非常有用)