使用docker+idea一键部署springboot项目到Linux服务器-爱代码爱编程
看此教程之前需要你先安装配置好docker ,如果还没有安装可以 -> 点击查看安装教程
Linux的配置
-
开放2375端口
vim /usr/lib/systemd/system/docker.service
-
修改配置文件
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock # 建议注释掉原来的配置 复制下面的配置 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
-
重新加载配置文件
systemctl daemon-reload
-
重启docker
systemctl restart docker
-
防火墙开放2375端口号
firewall-cmd --zone=public --add-port=2375/tcp --permanent
-
重新加载防火墙
firewall-cmd --reload
idea的配置
- 下载docker插件,重启idea
- 配置docker的连接信息
显示 - pom文件build-> plugins 标签下添加如下内容
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<configuration>
<tasks>
<copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
-
添加docker的运行配置
-
打包项目
-
运行docker
-
查看输出信息
出现如下图所示信息表示部署成功 -
查看运行日志
日志打印正常
docker设置账号密码
因为docker 默认是root 权限,允许所有人访问,直接把2375端口暴露在外网相当于直接把服务器的root 权限拱手送人,因此我们需要构建一个加密的TCP链接,以Https的方式连接到远程的docker 服务器
创建ca证书
创建一个ca文件夹:
sudo mkdir -p /usr/local/ca
cd /usr/local/ca
创建一个key
sudo openssl genrsa -aes256 -out ca-key.pem 4096
sudo openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
提示你需要输入密码和确认密码,请记住这个密码
填写一些基本的信息,国家啊,地区
生成server-key.pem
sudo openssl genrsa -out server-key.pem 4096
绑定IP或者域名
$HOST 这个值,填写你的服务器外网IP 或者服务器外网域名
sudo openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
配置白名单
sudo vim extfile.cnf
$HOST 是上一步设置的那个 $HOST,加入下列内容:
subjectAltName = DNS:106.54.84.33,IP:106.54.84.33,IP:127.0.0.1,IP:0.0.0.0
extendedKeyUsage = serverAuth
你如果希望只有指定的IP能够访问的话,请把0.0.0.0 改为指定IP,不过一般情况下,个人的网络是没有固定的公网IP的,所以建议设置成0.0.0.0,但是需要证书才能访问
生成ca-key
sudo openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
执行这一句需要输入之前设置的密码
创建客户端密钥和证书签名请求:
sudo openssl genrsa -out key.pem 4096
sudo openssl req -subj '/CN=client' -new -key key.pem -out client.csr
修改 extfile.cnf
subjectAltName = DNS:106.54.84.33,IP:106.54.84.33,IP:127.0.0.1,IP:0.0.0.0
extendedKeyUsage = clientAuth
生成签名私钥:
sudo openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
需要输入之前设置的密码
修改权限
sudo chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
现在client.csr
和server.csr
两个文件可以删除了。
docker配置ca证书
把证书复制过去
sudo cp server-*.pem /etc/docker/
sudo cp ca.pem /etc/docker/
将Docker服务停止了,然后:
修改docker 的配置
sudo vi /lib/systemd/system/docker.service
把ExecStart 的值设置为如下
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
idea中使用ca证书连接docker
我们把上一步生成的ca.pem
,cert.pem
,key.pem
文件复制到本地
打开idea的docker配置
值得注意的是,我们需要把tcp 改为https,不然会报如下错误
选择证书文件夹路径
到此所有配置完成
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/srjkgoreihgw/article/details/107959574