首页 > 其他分享 >docker-compose 搭建ci/cd

docker-compose 搭建ci/cd

时间:2025-01-02 21:21:21浏览次数:1  
标签:compose gitlab cd GitLab docker data Docker

使用Docker Compose搭建CI/CD环境是一种流行的做法,因为它允许你轻松地管理和部署多个服务。下面是一套基于Docker Compose的CI/CD平台推荐方案,包括Jenkins作为CI/CD工具,GitLab作为代码仓库,以及Nginx作为反向代理。此外,还包括了数据库和缓存服务,以支持这些工具的运行。

环境需求

  • 操作系统:Linux(推荐CentOS 7或更高版本)
  • 硬件配置:至少4GB RAM,推荐8GB或更多
  • 网络端口:80 (HTTP), 443 (HTTPS), 22 (SSH), 50000 (Jenkins CLI)

工具和服务

  1. Docker 和 Docker Compose:用于容器化服务。
  2. Jenkins:持续集成和持续交付的服务器。
  3. GitLab:用于代码托管和管理CI/CD流程。
  4. Nginx:作为反向代理,用于负载均衡和SSL终止。
  5. MySQL 或 PostgreSQL:用于Jenkins和GitLab的数据存储。
  6. Redis:用于缓存和消息队列。
  7. GitLab Runner:用于执行CI/CD管道中的任务。

安装步骤

1. 主机准备

  • 确保Linux系统已更新至最新状态。
  • 安装必要的软件包,如 curlvim等。
  • 确保Docker和Docker Compose已正确安装。

2. 安装Docker和Docker Compose

# 安装Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

3. 创建Docker Compose配置文件

创建一个名为 docker-compose.yml的文件,内容如下:

version: '3.8'

services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./certs:/etc/nginx/certs
    depends_on:
      - jenkins
      - gitlab

  jenkins:
    image: jenkins/jenkins:lts
    user: root
    ports:
      - "50000:50000"
    volumes:
      - jenkins-data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false

  gitlab:
    image: gitlab/gitlab-ce:latest
    restart: always
    ports:
      - "10080:80"
      - "10022:22"
    volumes:
      - gitlab-config:/etc/gitlab
      - gitlab-logs:/var/log/gitlab
      - gitlab-data:/var/opt/gitlab

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: gitlabhq_production
      MYSQL_USER: gitlab
      MYSQL_PASSWORD: gitlabpassword
    volumes:
      - mysql-data:/var/lib/mysql

  redis:
    image: redis:alpine
    command: ["redis-server", "--appendonly", "yes"]
    volumes:
      - redis-data:/data

  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - gitlab-runner-config:/etc/gitlab-runner

volumes:
  jenkins-data:
  gitlab-config:
  gitlab-logs:
  gitlab-data:
  mysql-data:
  redis-data:
  gitlab-runner-config:

4. 配置Nginx

创建 nginx.conf文件,配置Nginx以正确地代理请求到Jenkins和GitLab。

5. 启动服务

docker-compose up -d

6. 配置Jenkins和GitLab

  • 访问Jenkins和GitLab的Web界面,完成初始设置。
  • 在Jenkins中安装推荐的插件,创建管理员账户。
  • 在GitLab中创建管理员账户,配置GitLab Runner。

注意事项

  • 确保所有服务的端口没有被其他服务占用。
  • 调整 docker-compose.yml文件中的环境变量以适应你的环境。
  • 配置适当的防火墙规则,以允许外部访问必要的端口。
  • 使用SSL证书保护你的网站,可以通过Let's Encrypt免费获得。

这套方案为你提供了一个基本的CI/CD环境,你可以根据项目的具体需求进行调整和扩展。

标签:compose,gitlab,cd,GitLab,docker,data,Docker
From: https://www.cnblogs.com/wykang/p/18648760

相关文章

  • docker 镜像上传下载,及构建java项目镜像心得
    docker在服务部署中是比较方便,并且在部署过程中出现问题的几率较低。本文对基础的docker项目部署做简单介绍1、安装docker和docker-compose,网上都有自行搜索2、拉取官方镜像①、拉官方镜像需要有镜像服务器,没有镜像服务器会报错,好用的镜像服务器都是收费的,不收费的大部分用不......
  • Docker 入门指南
    简介Docker是一个开源的容器化平台,革命性地简化了应用程序的部署和管理。想象它就像是一个轻量级的"搬家专家",能将应用程序及其所有依赖打包到一个标准化的容器中,确保无论在哪里运行,都能保持一致的环境和性能。Dockervs虚拟机:特性Docker虚拟机虚拟化方式操作系统级别......
  • 免费CDN加速,零成本提升网站速度!
    1.起因免备案的服务器要么在海外,要么是国内通过内网穿透才能访问,这两种方法好处是免费,坏处是延迟太高,有的地区延迟能到四五百甚至超时,这样明显是不行的。所以需套一个cdn来加速,在2024年,免费的商业CDN基本都需备案了,所以找到了免费的CDN,CloudFlare。2.问题国内CloudFlar......
  • docker基本概念,docker镜像管理,docker命令
    docker基本概念镜像管理docker命令一.docker 1.基本概念 (1)docker:能够将程序和环境进行打包的工具 (2)容器:自带独立运行环境的特殊进程 (3)镜像:镜像可以被理解为一个模板,通过这个模板可以实例化出很多容器,包含容器所需的所有文件和配置信息. (4)仓库:用来存储......
  • docker-compose安装nexus
    拉取镜像下载地址https://hub.docker.com/r/sonatype/nexus3dockerpullsonatype/nexus3创建持久化目录`mkdir/data/nexuschmod777/data/nexus`ymlversion:'3'services:nexus:restart:alwaysimage:192.168.1.223:10242/base/sonatype/nexus3:late......
  • 让 Java 再次伟大 - 你不知道的 Java 之集成 Docker 的那些密事(一章节)
    学会这款全新设计的Java脚手架,从此面试不再怕!Docker的底层实现原理Docker是一种容器服务,为了方便理解你可以认为他是一个轻量级的虚拟机。通过Docker创建的容器,在宿主机上共享硬件资源和底层系统与接口,同时又能提供互相隔离的应用程序环境。这是怎么做到的?由于......
  • docker安装fastdfs
    使用Docker安装FastDFS1.获取镜像可以利用已有的FastDFSDocker镜像来运行FastDFS。获取镜像可以通过下载dockerimagepulldelron/fastdfs加载好镜像后,就可以开启运行FastDFS的tracker和storage了。2.运行tracker执行如下命令开启tracker服务dockerrun-dti--netwo......
  • linux更新软件源 安装docker
    vim/etc/aptsources.list学习参考https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81044217 #默认注释了源码镜像以提高aptupdate速度,如有需要可自行取消注释debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/xenialmainrestricteduniversemultiverse#......
  • CDS标准视图:维护通知原因数据 I_MaintNotificationCauseData
    视图名称:维护通知原因数据I_MaintNotificationCauseData视图类型:基础视图代码:点击查看代码@AbapCatalog.sqlViewName:'INOTIFCAUSEDATA'@AbapCatalog.compiler.compareFilter:true@AccessControl.authorizationCheck:#CHECK@EndUserText.label:'MaintenanceNotifi......
  • 《docker基础篇:5.本地镜像发布到阿里云》
    @目录5.本地镜像发布到阿里云本人其他相关文章链接5.本地镜像发布到阿里云案例使用步骤:1)本地镜像素材原型2)阿里云开发者平台3)创建仓库镜像4)将镜像推送到阿里云5)将阿里云上的镜像下载到本地6)运行注意点1:本地镜像发布到阿里云流程注意点2:步骤1中本地镜像素材原型注......