需求

我用idea写的代码,然后,利用docker-maven-plugin 插件,希望执行通过mvn clean package docker:build命令,将代码构建成Docker镜像,直接推送到我的本地虚拟机centos下的docker环境下,可以直接用docker命令运行。

添加插件

pom.xml 文件添加docker-maven-plugin 插件

        <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>olysa/bootdo:1.0.2</imageName>
                    <baseImage>java</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <dockerHost>http://192.168.56.102:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

<dockerHost>http://192.168.56.102:2375</dockerHost> 这里要注意:
1. 有的文档用的https协议,我这本地的,如果用https协议,会报Unrecognized SSL message, plaintext connection?,根据自己的情况而定。
2. http://192.168.56.102:2375 需要填写你的centos ip地址,并且防火墙启用centos上的2375端口。如何开放端口请移步iptables 开放防火墙端口

docker开启远程访问

如果没有开启远程访问,会报 Connect to 192.168.56.102:2375 [/192.168.56.102] failed: Connection refused: connect

  • /usr/lib/systemd/system/docker.service,配置远程访问。主要是在[Service]这个部分,加上下面两个参数:
cd /usr/lib/systemd/system

vi docker.service

ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

  • docker重新读取配置文件,重新启动docker服务。
systemctl daemon-reload  //重新读取配置文件

systemctl restart docker //重新启动服务
构建Docker镜像
  • 准备工作都最配好了,在idea工程下pom.xm文件目录下,执行以下代码,构建Docker镜像。
mvn clean package docker:build

安静等一段时间构建完成后,去centos下,查看镜像。执行docker images

可以看到,配置的代码已经构建成镜像文件,并上传到虚拟机里面了。

启动镜像
docker run -d -p 8000:8089 olysa/bootdo:1.0.2  //8089是我代码中的port,8000是映射端口

再访问 http://192.168.56.102:8000之前,记得开启防火墙8000 端口。

iptables -I INPUT -p tcp --dport 8000 -j ACCEPT   //当前生效,重启虚拟机后又失效了

涉及到的一些docker命令就不多解释了,你可以参考我的另一篇文章 Docker常用命令

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐