Centos安装Docker并使用IDEA插件一键发布SpringBoot项目

本文详细介绍如何在CentOS上安装Docker,并配置Docker远程连接,通过IntelliJ IDEA和Maven打包Spring Boot项目为Docker镜像,实现自动化部署。

该部署方式有一定的安全隐患,只建议个人测试玩玩。

安装Centos

参考自官方流程

  • 卸载旧版本

    yum remove docker \
                        docker-client \
                        docker-client-latest \
                        docker-common \
                        docker-latest \
                        docker-latest-logrotate \
                        docker-logrotate \
                        docker-engine
    
  • 安装所需包

    sudo yum install -y yum-utils \
        device-mapper-persistent-data \
        lvm2    
    
  • 设置稳定的仓库

    sudo yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo
    
  • 安装

    sudo yum install docker-ce docker-ce-cli containerd.io         
    

    如果控制台提示是否接受GPG密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果是,则接受。

Docker远程连接配置

  • 修改Docker配置:vi /lib/systemd/system/docker.service
    注释原有ExecStart行再添加ExceStart:
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --containerd=/run/containerd/containerd.sock
    
  • 重启Docker并校验(需确保防火墙与ECS已开启2375端口)
    systemctl daemon-reload
    systemctl restart docker
    curl 127.0.0.1:2375/info
    

Intellij IDEA配置

  • 配置Docker连接
    在这里插入图片描述

  • 项目根目录配置Dockerfile

    FROM java:8
    
    MAINTAINER Wilson
    
    # 统一容器与服务器时间
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
    #复制当前项目target/spring-boot-demo.jar到容器中
    COPY ./target/spring-boot-demo.jar spring-boot-demo.jar
    EXPOSE 8080
    
    ENTRYPOINT ["java","-jar","spring-boot-demo.jar"]
    
  • 配置插件运行参数
    在这里插入图片描述
    在这里插入图片描述

    • 项目配置打包
      主程序QuickApplication :
      @SpringBootApplication
      @RestController
      @RequestMapping("/")
      public class QuickApplication {
          public static void main(String[] args) {
              SpringApplication.run(QuickApplication.class, args);
          }
      
          @GetMapping("/hello")
          public ServerResponse hello() {
              return ServerResponse.success("Hello World");
          }
      }
      
      pom.xml:
      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
              <groupId>org.apache.commons</groupId>
              <artifactId>commons-lang3</artifactId>
          </dependency>
      </dependencies>
      
      <build>
          <finalName>spring-boot-demo</finalName>
          <plugins>
              <plugin>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-maven-plugin</artifactId>
              </plugin>
          </plugins>
      </build>
      
      Docker插件运行前需进行项目打包:mvn package
    • 运行Docker插件
      在这里插入图片描述
      运行效果图如下(可以看见镜像与容器皆被创建):在这里插入图片描述
      点击Log可以查看容器log:
      在这里插入图片描述
  • 结果校验
    在这里插入图片描述

结语

虽然Docker可以通过添加CA证书通过https连接提高连接安全性,但这样每个开发者都需要下载CA证书,这显然十分麻烦。实际开发建议通过Jenkins去执行Docker脚本,避免通过外网连接直接操作Docker,具体可参考该文章:Docker+Jenkins+Nginx+SpringBoot自动化部署项目

项目地址spring-boot-docker-demo

### 一键部署远程服务器开发环境的方法 #### 使用华为虚拟一键部署服务器 华为提供了便捷的一键部署功能,允许用户快速配置启动开发所需的环境。此方法适用于多种操作系统,包括 EulerOS、CentOS、Ubuntu 和 SUSE[^1]。通过该方式,可以显著减少手动配置的时间成本。 #### 安装 Git 工具 为了实现更高效的代码管理和更新,在 CentOS 或 RHEL 8 及更高版本中,可以通过以下命令安装 Git 工具: ```bash sudo dnf install git -y ``` 这一步骤能够确保开发者具备基础的源码管理能力,从而更好地支持后续的一键部署流程[^2]。 #### IDEA 一键部署Docker 的实践案例 针对频繁迭代的小型敏捷开发团队,JetBrains 提供了一种基于 IntelliJ IDEA 的解决方案——直接将 Spring Boot 项目一键部署到远程服务器中的 Docker 容器内。这种方法不仅减少了重复劳动,还大幅缩短了每次发布所需的时间(通常可控制在几分钟以内),极大提升了工作效率[^3]。 以下是具体的实施步骤概述: 1. **设置远程调试连接** 在本地 IDE 中定义好目标主机的相关参数,比如 IP 地址、端口号以及认证凭证等信息。 2. **构建镜像文件** 利用 Maven 插件或者 Gradle 构建工具生成适合当前项目的定制化 Dockerfile 文件,上传至指定位置。 3. **执行自动推送脚本** 编写 shell 脚本来完成最后阶段的任务,即把最新版的应用程序包传送到远端机器上的对应目录下,同时触发容器重建动作。 #### Cloud Container Engine (CCE) 整合方案 如果企业希望进一步优化 CI/CD 流程,则可以选择引入阿里云或其他厂商推出的 Kubernetes 平台服务产品,例如 CCE(Cloud Container Engine)。它本身已经集成了丰富的插件生态体系,配合官方文档指导下的标准化操作指南,完全可以满足大多数场景下的需求[^4]。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-springboot-app spec: replicas: 2 selector: matchLabels: app: springboot-example template: metadata: labels: app: springboot-example spec: containers: - name: springboot-container image: your-docker-repo/springboot-image:latest ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: springboot-service spec: type: LoadBalancer selector: app: springboot-example ports: - protocol: TCP port: 80 targetPort: 8080 ``` 上述 YAML 片段展示了如何利用 K8s 创建一个简单的微服务架构实例,其中包含了两个副本节点以及对外暴露的服务接口地址分配逻辑等内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值