docker-compose 搭建ci/cd

使用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环境,你可以根据项目的具体需求进行调整和扩展。

posted @ 2025-01-02 21:02  派森的猫  阅读(177)  评论(0)    收藏  举报