微服务由于服务数量众多,容器化部署是目前的主流方案。
1、修改docker配置,开启允许远程访问docker的功能
/usr/lib/systemd/system/docker.service
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2、重启docker
3、安装docker插件
4、安装完成之后需要重启一下IDEA
5、测试接口
@RestController
public class TestDocker {
@GetMapping("/test")
public String test() {
return "远程docker访问成功!!!";
}
}
6、配置Dockerfile
在项目的根目录下,创建一个Dockerfile,作为镜像的构建文件
FROM hub.c.163.com/library/java:latest
VOLUME /tmp
ADD target/docker-0.0.1-SNAPSHOT.jar docker.jar
ENTRYPOINT ["java","-jar","/docker.jar"]
a、SpringBoot项目的运行依赖java环境,所以镜像是基于java镜像来构建
b、考虑到docker官方镜像下载较慢,所以这里使用了网易提供的docker镜像加速
c、由于SpringBoot运行时需要tmp目录,所以这里配置一个/tmp目录
d、将本地target目录中打包好的jar文件复制一份新的到/docker.jar
e、最后是配置一下启动命令,由于打包的jar已经成为docker.jar了,所以启动命令是启动docker.jar
7、配置Maven插件
在pom.xml中添加如下插件:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<dockerHost>http://192.168.124.15:2375</dockerHost>
<imageName>docker/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<forceTags>true</forceTags>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
a、首先在execution节点中配置当执行mvn package的时候,顺便也执行一下docker build
b、然后在configuration中配置docker的主机地址,镜像的名称,镜像的tag,其中dockerDirectory表示Dockerfile的位置
c、最后resource节点中再配置一下jar的位置和名称
8、打包
接下来对项目进行打包,打包完成后,项目会自动构建成一个镜像,并且上传到docker容器中
9、运行方式一
10、运行方式二
这样,我们的SpringBoot项目就可以成功的发布到远程docker容器中了。