NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

  • 云原生

  • Kubernetes

  • KubeSphere

  • K3S

  • 笔记

    • 基于KtConnect实现本地与kubernetes集群互通
    • 基于Wireguard实现本地与kubernetes集群互通
    • Kubesphere问题总结
    • SpringBoot应用存活探针
    • DevOps - IDEA与Docker实现CI
      • 前言
      • ~~IDEA连接Docker - Socket~~
      • IDEA连接Docker - SSH
      • Dockerfile
      • 推送仓库
      • 参考
    • 下一代CI工具 - Tekton
    • 基于Clash.Meta实现的流量分离
    • Windows命令-route路由表
    • 基于acme.sh的证书分发
    • 基于Nginx的内网域名管理
    • 基于Cloudflare-Zero-Trust的内网穿透
    • 基于rclone的跨云对象存储迁移
    • 基于DNS区域解析分流国内外CDN
    • 年轻人的第一台服务器(D1581)
    • IPMI笔记
    • ipmitool笔记
    • iSCSI服务搭建
    • 基于WireGuard实现的云组网
    • 基于Tailscale实现的云组网
  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • 笔记
NipGeihou
2023-05-30
目录

DevOps - IDEA与Docker实现CI

# 前言

在没有运维或是说开发即运维的场景中,需要持续交付一个可用的 dev 分支的后端服务给前端使用,而 Jenkins、K8S 搭建与配置都会让事情变得糟糕,而以下我要分享的使用 IDEA(JetBrains 其他产品同理)和 Docker 实现的非高可用的持续集成在开发场景下的持续集成变得得心应手。

最终结果:当后端开发完一个功能后,在 IDEA 中点击 Run 即可完成 Maven 编译、Docker 构建、切换镜像。

# IDEA 连接 Docker - Socket

注意

不推荐使用此方式,有安全问题

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

加入 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375






 





[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# IDEA 连接 Docker - SSH

image-20230530104307753

# Dockerfile

运行在连接的 Docker

image-20230530142939466

    FROM openjdk:8
    VOLUME /tmp
    ARG JAR_FILE=target/*.jar
    COPY ${JAR_FILE} app.jar
    ENV SPRING_CLOUD_NACOS_CONFIG_USERNAME nacos
    ENV SPRING_CLOUD_NACOS_CONFIG_PASSWORD nacos
    ENV SPRING_PROFILES_ACTIVE prod
    EXPOSE 20010
    ENTRYPOINT ["java","-jar","./app.jar"]
    
    FROM nginx:stable-alpine
    COPY dist /usr/share/nginx/html
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]
    
    // Make sure to add code blocks to your code group
    • 根据实际情况在 Run 配置中添加 端口、环境变量、tag、容器name 等信息。
    • 配置执行前执行 Maven 打包操作

    image-20230531120423911

    最终只需要在部署到内开发环境时,点击 Run 即可一键 CI

    image-20230531120707762

    # 推送仓库

    项目满足上线时,需要交付镜像给运维(不存在的)或是使用云服务运行,而为此部署一套 CI 工具仍然成本很大,而且还需要和不存在的运维讨论 “为什么我的电脑可以,你就不行” 的哲学问题,而直接在开发电脑构建镜像并推送到远程仓库,直接交付镜像就没有这个问题了。

    还有一个好处,本地网络上行通常比较大,推得快。

    1. 如果只是想推送镜像,不打算运行,把 运行构建的镜像 去掉。

    image-20230610003701806

    1. 点击 推送镜像

    image-20230610003914030

    1. 添加注册表(远程仓库)

    image-20230610004006923

    命名空间/镜像文件:标签
    
    1. 确定(开始推送)

    # 参考

    • Getting Started | Spring Boot Docker (opens new window)
    上次更新: 2024/03/11, 22:37:05
    SpringBoot应用存活探针
    下一代CI工具 - Tekton

    ← SpringBoot应用存活探针 下一代CI工具 - Tekton→

    最近更新
    01
    iSCSI服务搭建
    05-10
    02
    磁盘管理与文件系统
    05-02
    03
    网络测试 - iperf3
    05-02
    更多文章>
    Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式