一、测试环境搭建
开发机是:idea,windows环境
私服:centos+docker+register+registerui+registerfly
正式运行环境:centos+docker
二、准备工作
主要是私服环境安装
(1)docker register
(2)dockerfly
(3)docker register ui
(4) 放开http推送
(1)安装register
docker run -d -p 5000:5000 --name registry registry:2
(2)安装dockerfly
docker search dockerfly
docker run --name dockerfly --restart=always -d -v /var/run/docker.sock:/var/run/docker.sock -p 2735:2735 -p 28083:28083 dockerfly
注意这里的2735端口,等下要用到。pom.xml文件中要指定。
网页:http://xxx.xxx.xxx.xxx:28083
用户名:admin
密码:1234
(3)安装register ui
docker pull joxit/docker-registry-ui:static
docker run -p 8280:80 --name registry-ui \
--link registry2:registry2 \
-e REGISTRY_URL="http://registry2:5000" \
-e DELETE_IMAGES="true" \
-e REGISTRY_TITLE="Registry2" \
-d joxit/docker-registry-ui:static
访问网页:http://xxx.xxx.xxx.xxx:8280
(4)修改Docker Daemon的配置文件,
①文件位置为
/etc/docker/daemon.json
,由于Docker默认使用HTTPS推送镜像,而我们的镜像仓库没有支持,所以需要添加如下配置,改为使用HTTP推送;
{
"insecure-registries": ["192.168.3.101:5000"]
}
②最后使用如下命令重启Docker服务。
systemctl daemon-reload && systemctl restart docker
三、编写pom.xml
(1)先在pom.xml中添加插件。
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33.0</version>
<configuration>
<!-- Docker 远程管理地址,registerfly中暴露的2735端口-->
<dockerHost>http://192.168.3.101:2735</dockerHost>
<!-- Docker 推送镜像仓库地址-->
<pushRegistry>http://192.168.3.101:5000</pushRegistry>
<images>
<image>
<!--由于推送到私有镜像仓库,镜像名需要添加仓库地址-->
<name>192.168.3.101:5000/mall-tiny/${project.name}:${project.version}</name>
<!--定义镜像构建行为-->
<build>
<!--定义基础镜像-->
<from>java:8</from>
<args>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</args>
<!--定义哪些文件拷贝到容器中-->
<assembly>
<!--定义拷贝到容器的目录-->
<targetDir>/</targetDir>
<!--只拷贝生成的jar包-->
<descriptorRef>artifact</descriptorRef>
</assembly>
<!--定义容器启动命令-->
<entryPoint>["java", "-jar","/${project.build.finalName}.jar"]</entryPoint>
<!--定义维护者-->
<maintainer>macrozheng</maintainer>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
注意:这里的2735端口就是register-fly暴露的端口。
(2)增加完成后,按照图下所示,先package,然后再docker:build就可以生成docker image了。
可以到register服务器上用docker images看生成的镜像。
(3)docker:push推送到服务器上面
执行docker:push后,登录到网页registerui,看服务器上是不是有image。
四、pull
进入正式运行服务器上,使用pull xxx.xxx.xxx.xxx:5000/name:tag将image拉取下来。