IDEA快速部署Spring Boot 项目到Docker

一、IDEA 连接 Docker

咱们通常运用TCP的方法连接Docker,所以咱们需求装备Docker并敞开端口,假如是本地虚拟机,能够简单运用http的方法进行连接(不主张),假如你是长途服务器,请必须采用安全的连接方法(https)

自己的虚拟机

假如是自己的虚拟机,能够不需求创立CA证书。能够运用http://ip:端口号的方式连接。

:one: 编辑docker.service文件

vim /usr/lib/systemd/system/docker.service

找到 [Service] 节点,修正 ExecStart 属性,添加 -H tcp://0.0.0.0:2375

IDEA快速部署Spring Boot 项目到Docker

这样相当于对外敞开的是 2375 端口,当然也能够依据自己情况修正成其他的。

:two: 从头加载Docker装备收效

systemctl daemon-reload
systemctl restart docker 

:three: 测验是否能拜访

#浏览器拜访
ip:2375/vsersion

假如拜访成功证明已装备成功。

假如不妨拜访,请查看防火墙是否敞开2375端口:

#查看防火墙敞开列表
firewall-cmd --list-ports
#添加2375端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
#重启防火墙
firewall-cmd --reload

:four: 经过IDEA连接

IDEA快速部署Spring Boot 项目到Docker

长途服务器

**假如是长途服务器,一定要创立CA证书。**运用https://ip:端口号的方式连接。(否则你的Docekr任何人都能够推送镜像,分分钟取挖矿)

下面我将指令都抽离出来,方便运转。[ip]替换为你的服务器ip

(假如想看更具体的分过程运转,请看[这篇文章](Docker敞开长途安全拜访 – niceyoo – 博客园 (cnblogs.com)),但是留意其中5.2章节的一个过错:extfile.cnf 这儿不能用官方给的,不要DNS)

#1、创立CA私钥和CA公钥
mkdir -p /usr/local/ca
cd /usr/local/ca
#2.然后在Docker看护程序的主机上,生成CA私钥和公钥:履行完后,这儿会要咱们输入暗码,请紧记,例如我这儿输入wang123
openssl genrsa -aes256 -out ca-key.pem 4096
#3.补全CA证书信息,履行后需求输入,拜访暗码、国家、省、市、组织名称、单位名称、CommonName、邮箱等
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
#4.生成server-key.pem
openssl genrsa -out server-key.pem 4096
#5.用CA签署公钥:
openssl req -subj "/CN=[ip]" -sha256 -new -key server-key.pem -out server.csr
#6.匹配白名单,答应指定的ip能够连接到服务器中的docker,这儿答应所有携带ca的ip
echo subjectAltName = IP:[ip],IP:0.0.0.0 >> extfile.cnf
#7.将Docker看护程序密钥的扩展运用属性设置为仅用于服务器身份验证:
echo extendedKeyUsage = serverAuth >> extfile.cnf
#8.生成签名证书,履行完后需求输入暗码,上面咱们设置的暗码(wang123)
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem -extfile extfile.cnf
#9. 生成客户端的key.pem
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
#10.使秘钥适合客户端身份验证
echo extendedKeyUsage = clientAuth >> extfile.cnf
echo extendedKeyUsage = clientAuth > extfile-client.cnf
#11.生成签名证书,履行完后需求输入暗码
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out cert.pem -extfile extfile-client.cnf
#12.删去不需求的文件
rm -v client.csr server.csr extfile.cnf extfile-client.cnf
#13.设置权限
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
#14.归集服务器证书
cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/

创立完证书之后,咱们需求修正Docker装备:

#使Docker看护程序仅接收来自供给CA信赖的证书的客户端的链接
vim /lib/systemd/system/docker.service

ExecStart 属性值进行替换:

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

从头加载daemon并重启docker

systemctl daemon-reload
systemctl restart docker

留意,请查看防火墙和安全组是否都敞开了此端口:2375

然后将ca证书下载到本地:

IDEA快速部署Spring Boot 项目到Docker

装备完就能够取IDEA的Docker中进行装备:

IDEA快速部署Spring Boot 项目到Docker

二、Maven插件与Dockerfile

docker-maven-plugin

咱们IDEA现已能够连接Docker,咱们想在package的时分,把打包镜像推送到Docker傍边,咱们需求装备Maven插件:

<plugin><!--制作docker镜像的maven插件-->
   <groupId>com.spotify</groupId>
   <artifactId>docker-maven-plugin</artifactId>
   <version>1.2.2</version>
   <executions>
      <execution>
         <id>build-image</id>
         <phase>package</phase>
         <goals>
            <goal>build</goal>
         </goals>
      </execution>
   </executions>
   <configuration>
      <imageName>${project.artifactId}</imageName><!--镜像名-->
      <imageTags>
         <imageTag>latest</imageTag>
      </imageTags>
      <dockerCertPath>./ca</dockerCertPath><!--证书地点的目录-->
      <dockerDirectory>${project.basedir}</dockerDirectory><!--Dockerfile地点的目录-->
      <dockerHost>https://ip:2375</dockerHost><!--docker地点的宿主机地址-->
      <resources>
         <resource><!--这儿装备的就是打包后jar地点的位置-->
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.jar</include>
         </resource>
      </resources>
   </configuration>
</plugin>

Dockerfile

FROM java:8
#作者
MAINTAINER wangze
#挂在
VOLUME /tmp
#将jar包添加到容器中并更名
ADD project-manage-service-0.0.1-SNAPSHOT.jar pms.jar
#运转jar
RUN bash -c 'touch /pms.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/pms.jar"]

三、项目打包上传镜像

当咱们履行package操作后,会主动将jar包作为image上传到Docker中:

IDEA快速部署Spring Boot 项目到Docker

能够在IDEA右下角的服务中,找到Docker连接,查看镜像

IDEA快速部署Spring Boot 项目到Docker

四、容器的创立与运转

容器的创立

先找到刚才打包的镜像:

IDEA快速部署Spring Boot 项目到Docker

然后右键创立一个容器:

这儿端口格式为:主机端口:容器端口

例如你的项目在容器中是8080端口,你主机的8080现已被占用,你能够这样写:

#拜访的时分 http://ip:8090/
8090:8080

IDEA快速部署Spring Boot 项目到Docker

运转容器,咱们能够看到对应的日志:

IDEA快速部署Spring Boot 项目到Docker

环境的查看

首先查看服务器的防火墙:

firewall-cmd --list-ports

假如主机端口没有敞开,则敞开防火墙:

firewall-cmd --zone=public --add-port=8090/tcp --permanent
#重启防火墙
firewall-cmd --reload

PS: 假如是长途服务器,记住装备安全组

拜访项目查验

拜访项目的地址,能够正常拜访:

IDEA快速部署Spring Boot 项目到Docker

参考文章:

Docker敞开长途安全拜访 – niceyoo – 博客园 (cnblogs.com)