Docker+harbor+rancher2.6.3部署springboot项目
1、在pom的文件中添加以下配置
<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <executions> <execution> <id>build-image</id> <!--用户只需执行mvn package ,就会自动执行mvn docker:build和 docker push--> <phase>package</phase> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <!--与maven settigs中配置的一致--> <serverId>my-hub</serverId> <registryUrl>http://${docker.registry.url}</registryUrl> <!--镜像名称--> <imageName>${docker.registry.url}/${docker.namespace}/${project.artifactId}:latest</imageName> <!--指定基础镜像jdk1.8--> <baseImage>kdvolder/jdk8</baseImage> <!--镜像制作人本人信息 --> <!--<maintainer>yang.zhou@unicorn365.cn</maintainer>--> <!--切换到工作目录--> <workdir>/opt</workdir> <!--${project.build.finalName}.jar是打包后生成的jar包的名字--> <entryPoint>["java", "-jar","-Xms256m","-Xmx512m","/${project.build.finalName}.jar"] </entryPoint> <!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST)--> <dockerHost>http://${docker.host}</dockerHost> <!-- jar包位置--> <resources> <resource> <targetPath>/</targetPath> <!-- target目录下--> <directory>${project.build.directory}</directory> <!--通过jar包名找到jar包--> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
docker.registry.url:harbor的访问地址(包含ip:port),镜像推送的仓库地址。
docker.namespace:harbor中的项目,相当于把镜像分配到不同的目录下面,方便管理。
project.artifactId:一般表示当前springboot项目的名称。
docker.host:指定docker主机的地址,相当于当前springboot项目打包之后,将存在于的主机地址(http://127.0.0.1:2375)
2、maven的settings.xml文件配置
在servers标签下面添加如下配置,用于指定访问harbor仓库的用户名密码。
<server> <id>my-hub</id> <username>admin</username> <password>cquissE1</password> <configuration> <email>yang.zhou@unicorn367.cn</email> </configuration> </server>
此处id标签中的my-hub必须和步骤1中的serverId标签中的值对应,否则推送镜像的时候,将找不到密码。
3、项目打包并推送镜像
由于步骤1设置了执行mvn package的时候,将直接执行mvn docker:build和mvn docker:push,所以当我们打包完成后,将直接生成镜像,并推送到harbor私服。
<executions> <execution> <id>build-image</id> <!--用户只需执行mvn package ,就会自动执行mvn docker:build和 docker push--> <phase>package</phase> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions>
推送成功之后,在harbor中查看:
4、rancher配置集群中的全局私服地址
(1)、进入首页之后,点击左上角的☰ ,然后选择管理集群
(2)、选择对应的集群(此时默认集群已经创建好了,这里不要使用local集群,有点问题,具体还不知道为什么),然后点击右边的三点,下拉选择“编辑配置”
(3)、进入页面后,下滑找到“Private Registry”,也就是私服配置的地方。
填写完成之后,下滑到最下面,点击“Save”保存。
5、创建项目和命名空间
(1)、进入首页后,选择步骤4中的集群,并点击。
(2)、进入页面,在左上角点击“项目/命名空间”,然后点击右上角的“创建项目”。
(3)、进入页面,填写项目名称和添加项目成员,然后点击“创建”按钮即可。
(4)、创建成功之后,自动返回到(2)的页面,找到刚创建的项目,点击右边的“创建命名空
这里的项目和命名空间实际上就是将集群划分成不同的模块,进行管理,方便我们进行区分。
6、镜像配置
(1)、选择左边的“工作负载”,然后点击“Deployments”(可以配合上面的的筛选框,选择我们前面步骤创建的命名空间
(2)、然后选择右上角的“创建”,进入镜像配置页面
按照上面的步骤配置完成之后,滑动到最下面,点击“创建”,即可。
(3)、等待拉取镜像,自动部署服务,自动启动服务。
(4)、点击名称,进入pod,查看启动日志
(5)、当需要更新部署的时候,如果镜像名称没有改变,那么只需要点击“Redeploy”即可完成更新。