当前位置 博文首页 > CHQIUU的专栏:使用Docker插件实现Springboot项目远程部署

    CHQIUU的专栏:使用Docker插件实现Springboot项目远程部署

    作者:[db:作者] 时间:2021-07-20 21:59

    IntelliJ IDEA的Docker插件能帮助我们将当前工程制作成Docker镜像、运行在指定的远程机器上,是学习和开发阶段的好帮手。

    一、开发环境准备

    本次实战需要提前准备好以下内容:

    1. 开发环境操作系统:win10
    2. IntelliJ IDEA: 2018.2.4 (Ultimate Edition)
    3. JDK:1.8.0_181
    4. Maven:3.5.0
    5. Docker服务所在环境:CentOS Linux release 7.6.1810
    6. Docker:1.13.1, build b2f74b2/1.13.1

    二、开启Docker的远程连接

    在生产环境中安装Docker服务,同时开启Docker服务远程连接。开启Docker远程连接后,在开发和学习时都能带来便利,但请不要将此方式用在外部网络环境,以免带来安全问题,下图是官方警告:

    image.png

    1. 修改Docker配置文件:/lib/systemd/system/docker.service

    原来的配置:

    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

    修改为:

    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock

    修改完毕后保持退出。

    2. 重新加载配置并重启Docker

    [root@localhost ~]# systemctl daemon-reload && systemctl restart docker
    # 设置防火墙开放端口并重启防火墙
    [root@localhost ~]# firewall-cmd --zone=public --add-port=2375/tcp --permanent
    success
    [root@localhost ~]# systemctl restart firewalld

    3. 验证设置是否生效

    # 先在本地试试Docker服务是否正常启动
    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    redis               latest              235592615444        3 weeks ago         104MB
    tomcat              latest              2eb5a120304e        3 weeks ago         647MB
    centos              7                   b5b4d78bc90c        2 months ago        203MB
    hello-world         latest              bf756fb1ae65        6 months ago        13.3kB
    # 在另一台装又Docker的机器上测试远程访问本机如下所示表示一切正常
    [root@localhost ~]# docker -H tcp://192.168.95.2:2375 images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    redis               latest              235592615444        3 weeks ago         104MB
    tomcat              latest              2eb5a120304e        3 weeks ago         647MB
    centos              7                   b5b4d78bc90c        2 months ago        203MB
    hello-world         latest              bf756fb1ae65        6 months ago        13.3kB

    三、安装Docker插件

    在IDEA中打开“Plugins”界面(操作步骤“File->Settings…->Plugins”)搜索到Docker进行安装,如下图所示

    image.png

    安装完成后,需要重启IDEA,Docker插件安装完成。

    四、在IDEA中连接远程Docker服务

    在IDEA中打开“Docker”配置界面(操作步骤“File->Settings…->Build, Execution, Deployment->Docker”。在设置页面,按照下图的数字顺序创建一个Docker server并进行设置,其中"192.168.95.2"是Docker服务所在机器的IP地址,如果连接成功页面上会立即提示"Connection successful"。

    image.png

    至此,Docker插件准备完毕,远程连接也已经OK,可以尝试使用该插件了。

    五、用Docker插件将应用构建成镜像并在远程Docker上运行

    1. 配置Dockerfile文件

    在Springboot项目pom.xml文件所在目录中,创建名为Dockerfile的文件,并配置以下内容:

    # Docker image for springboot application
    # VERSION 1.0.0
    # Author: chqiuu
    
    ### 基础镜像,使用alpine操作系统,openjkd使用8u201
    FROM openjdk:8u201-jdk-alpine3.9
    
    #作者
    MAINTAINER chqiuu <chqiuu@qq.com>
    
    #系统编码
    ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
    
    #声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
    VOLUME /tmp
    
    #应用构建成功后的jar文件被复制到镜像内,名字也改成了wxoa.jar
    ADD target/wxoa-1.0.3.jar /usr/local/wxoa/wxoa.jar
    
    #启动容器时的进程
    ENTRYPOINT ["java","-jar","/usr/local/wxoa/wxoa.jar","--spring.profiles.active=prod"]
    
    #暴露端口
    EXPOSE 18090

    2. 在项目中创建Docker配置项

    如下图所示,点击“Edit Configuration…”打开配置项窗口:

    image.png

    创建一个Dockerfile配置,如下图所示

    image.png

    Dockerfile配置详情如下图所示,请按照图中的说明进行设置,确保每个红框中都会配置到,详细配置见Docker插件官网。最下面的那个"Run Maven Goal"点击后,会弹出一个小窗口 ,用来输入要执行的maven命令,这里输入clean package -U -DskipTests,表示每次在构建镜像之前,都会将当前工程清理掉并且重新编译构建:

    image.png

    3. 项目远程部署

    设置完成后,点击下图红框中的绿色三角按钮,执行此配置,运行结果如下所示,项目构建成功后,在Docker上部署镜像成功,然后运行容器成功。

    image.png

    登录远程Docker,先后执行docker image和docker ps命令查看镜像和容器情况如下,可见一切正常:

    [root@localhost ~]# docker images
    REPOSITORY          TAG                   IMAGE ID            CREATED             SIZE
    wxoa                latest                654468aa0c00        12 minutes ago      174MB
    redis               latest                235592615444        3 weeks ago         104MB
    tomcat              latest                2eb5a120304e        3 weeks ago         647MB
    centos              7                     b5b4d78bc90c        2 months ago        203MB
    hello-world         latest                bf756fb1ae65        6 months ago        13.3kB
    openjdk             8u201-jdk-alpine3.9   3675b9f543c5        15 months ago       105MB
    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
    7c12bfac19c6        654468aa0c00        "java -jar /usr/loca…"   12 minutes ago      Up 12 minutes       0.0.0.0:18090->18090/tcp   wxoa

    远程Docker所在服务器IP地址是192.168.95.2,因此在浏览器上访问地址:http://192.168.95.2:18090/wxoa,得到响应如下图所示,可见应用在容器中正常运行。到此IEDA下的Docker插件配置和使用实战就完成了。

    image.png

    cs