Docker之IntelliJ IDEA部署SpringBoot应用到Docker

Docker开启远程访问

vim /usr/lib/systemd/system/docker.service
在 ExecStart=/usr/bin/dockerd-current 后 增加 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
最终为 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

systemctl daemon-reload
systemctl restart docker

查看端口是否开启
netstat -nlpt

测试2375是否通
curl http://127.0.0.1:2375/info

打开2375防火墙
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload

IntelliJ IDEA安装Docker插件
搜索docker安装并重启

重启后继续打开File->settings->Build...->Docker->点击+号->选中TCP socket->输入你服务器的ip和docker远程连接的端口号2375,name可以随便取名,比如docker-connect-test
输入后会自动建立连接,如果这时候你看到显示连接成功后->apply->ok.
如果显示连接失败,请关闭windows防火墙,并确认服务器端防火墙的2375端口是否已开放且处于监听状态(netstat -tnl 去找一下是否有2375且显示Listen状态)
成功后可以在IDEA左下角找到Docker,或者通过依次打开view -> toolwindows -> Docker打开
点击左上角的运行按钮,即可连接到服务器的docker

Spring Boot服务docker部署

新建一个Spring Boot工程,设置端口为8080,在工程里写一个REST接口,如下,简单返回一个字符串

@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public String hello() {
  return "hello world";
}
}

 

在项目应用根目录下增加一个Dockerfile文件,内容如下

FROM java:8
VOLUME /tmp
ADD target/SpringBootTest-1.0.0.jar SpringBootTest-1.0.0.jar
RUN bash -c 'touch /SpringBootTest-1.0.0.jar'
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/SpringBootTest-1.0.0.jar"]

 

修改pom文件,添加properties,添加plugin

<properties>
<!-- 镜像前缀 -->
<docker.image.prefix>zns</docker.image.prefix>
</properties>

 

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!--<dockerHost>http://docker服务器ip:2375</dockerHost> --> 
<dockerDirectory></dockerDirectory> 
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

 

点击run->edit configuration,增加一个Docker配置,选择dockerfile类型,在弹出的界面填写信息
name可以随便取名
Server选择刚刚创建的docker-connect-test
Dockerfile选择dockerfile文件的位置
Image tag填写镜像名称 比如zns/springboottest:1.0.0
Container name填写容器名称 比如zns-springboottest
Bind ports填写服务器主机端口和docker容器端口映射 比如 18080:8080,注意这里的8080需跟EXPOSE 8080设置的端口一致
点击确定

然后启动SpringBoot应用和刚刚配置的docker应用


服务器打开18080防火墙
firewall-cmd --zone=public --add-port=18080/tcp --permanent
firewall-cmd --reload

访问服务器ip加上18080端口测试

上一篇:Python爬虫如何应对Cloudflare邮箱加密


下一篇:CDN是什么?如何用Cloudflare CDN加速网站