• Centos8.3、docker部署springboot项目实战记录


    引言

       目前k8s很是火热,我也特意买了本书去学习了一下,但是k8s动辄都是成百上千的服务器运维,对只有几台服务器的应用来说使用k8s就有点像大炮打蚊子。只有几台服务器的应用运维使用传统的tomcat部署很繁琐,效率不高,动辄十几分钟部署一台服务,使用jenkins部署又太过复杂,斟酌许久我还是选择了使用docker+dockerFile的方式部署。这种方式部署简单高效。

    docker安装

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #一键安装脚本
    systemctl enable docker.service                                    #设置docker开机启动
    systemctl restart docker.service                                   #启动docker服务

    开启docker远程访问端口

       编辑  /usr/lib/systemd/system/docker.service文件  添加 -H tcp://0.0.0.0:12375 -H unix://var/run/docker.sock 如下图:

        

        保存文件后 重新加载配置 然后重新启动

        systemctl daemon-reload           # 重新加载配置
        systemctl restart docker.service  # 重启docker服务

        注意-H tcp://0.0.0.0:12375 这句话的意思任意ip都可以使用tcp访问这个端口 可以根据实际情况匹配 IP因为这里没有token或者密钥 所以要特别注意 如果使用云服务器那么强烈建议这里设置为安全组IP白名单访问我当初在测试环境使用docker发布三四个小时就被人攻击了不过当初我是用的2375端口,这个端口特别容易被攻击

    配置IDEA docker环境

      idea安装docker环境插件 如下图:

     

     安装完成后重启idea 然后打开springboot项目,在根目录创建Dockerfile文件。如下图:

     

    编辑Dockerfile如下:

    FROM openjdk:11
    # 镜像是从 openjdk:11-jdk-alpin 继承而来的
    
    VOLUME /root/tmp
    # 表示挂载了 /root/tmp 目录到容器中
    
    ADD build/libs/brief-plus-0.0.1-SNAPSHOT.jar apprun.jar
    # 将bootJar 添加到镜像中根目录下 命令为 apprun.jar
    
    ENTRYPOINT ["java","-jar","/apprun.jar"]
    # ENTRYPOINT 在容器启动后执行 java 命令来运行程序
    
    # 设置容器时间
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    # ======= 其它的一些Dockerfile命令 ========== 这里我们没有用到不过还是提一下
    #COPY package.json /usr/src/app/
    #ADD 更高级的复制文件
    #ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。
    #CMD 指令就是用于指定默认的容器主进程的启动命令的。
    #ENV 设置环境变量
    #HEALTHCHECK 健康检查
    #EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
    EXPOSE 8090

    主要注意 build/libs/brief-plus-0.0.1-SNAPSHOT.jar apprun.jar 这句话 我是用的gradle 编译后的文件位于build/libs/ 目录下 如下图:

     

    maven编译后的文件位于target目录下 如下图:

     

    Dockerfile是根据具体的目录和打包后的名称来获取生成镜像文件所以这里一定不能出错

    配置Docker服务

    配置运行环境 

    创建一个tcp连接服务

    3.配置发布到docker的服务

    绑定端口ip的详细配置

    打包发布

    心得建议

    1.docker的镜像文件会分块,每块都有自己的签名,每次上传会进行对比差异的文件才会重新上传。

    2.每次上传的时候记得更改标签方便根据标签进行回滚。

    3.修改服务器的网络配置、防火墙需要重启docker服务。

    docker 常用命令:

    重启docker
    systemctl restart docker      # 重启docker服务
    systemctl daemon-reload    # 重新加载docker配置
     
    查看30分钟内的日志
    docker logs --since 30m id

     

  • 相关阅读:
    字符串,列表和元组-3
    数据和表达式-2
    python3.6.2(32位)的安装-1
    HTTP协议
    bug无法重现
    当开发说不是BUG时怎么办
    Python流程分类初试
    私有,封装
    Python继承
    编译型语言和解释型语言
  • 原文地址:https://www.cnblogs.com/jishuzhaichen/p/14943084.html
Copyright © 2020-2023  润新知