Docker远程发布项目
前提:准备好服务器并配置好相应端口号,安装好docker并启动服务,本文以CentOS 7为例,基于SpringCloud框架的微服务项目进行讲解
1、配置文件
此步骤的目的是在本地的开发环境中直接远程创建镜像。所以不是必须步骤,大家可以尝试此方法。如果不进行此步骤,则可以用XShell直接上传jar包至服务器,再登录服务器进行部署,详细参考文章使用DockerFile创建镜像。
值得说明的是,此方式又一个重大漏洞:因为服务器必须开放2375端口才能被远程开发机访问,所以有可能被植入恶意程序,所以这种方式只适用于测试环境,绝对不能用于生产环境。如果要使用此方法最好是对docker服务进行加密,只有拿到加密证书的客户端才能对服务进行操作,详细可参考Docker加密。
#对docker进行相关配置,使得客户端可远程对docker服务进行操作。
#最简单的方式就是将docker向外暴露。
#1、首先修改docker配置文件
vi /usr/lib/systemd/system/docker.service
#2、找到ExecStar并在后面加上-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
...第13行
ExecStart=/usr/bin/dockerd -H fd:// \
-H tcp://0.0.0.0:2375 \
--containerd=/run/containerd/containerd.sock
...
#3、重新加载配置文件并重启docker
systemctl daemon-reload
service docker restart
输入netstat -anp|grep 2375
显示docker正在监听2375端口,输入curl 127.0.0.1:2375/info 显示一大堆信息,证明远程api就弄好了。
本地开发环境配置:windows系统环境变量中新建DOCKER_HOST,值为tcp://xxx.xxx.xxx.xxx:2375(你改成你自己的docker服务器ip地址)。
完成以上操作后就可以在需要创建镜像的各个代码模块的pom文件中加入:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!-- FROM -->
<baseImage>openjdk:8</baseImage>
<imageName>livegoods/banner:1.0</imageName>
<dockerHost>http://xxx.xxx.xxx.xxx:2375</dockerHost>
<!-- ADD -->
<resources>
<resource><!-- 复制到容器中的文件,命名和本地文件命名一致。 -->
<!-- 复制到容器中的什么位置? -->
<targetPath>/</targetPath>
<!-- 本地文件所处目录 -->
<directory>${project.build.directory}</directory>
<!-- 本地文件的名称 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- ENTRYPOINT -->
<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
<exposes>
<expose>9002</expose>
</exposes>
</configuration>
</plugin>
</plugins>
</build>
上述操作其实等同于打jar包并上传到服务器,再用DockerFile创建镜像
接下来在IDEA中进行打包,首先创建一个maven配置
然后查看镜像是否上传成功docker images ls
即可