通过Docker Compose部署GitLab和GitLab Runner(一)

GitLab 是一个用于版本控制、项目管理和持续集成的开源软件平台,它提供了一整套工具,能够帮助团队高效地协作开发。而 GitLab Runner 则是 GitLab CI/CD 的执行者,用于运行持续集成和持续交付任务。

在本文中,我们将使用 Docker Compose 来快速部署 GitLab 和 GitLab Runner。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,它通过一个 YAML 文件来配置服务的运行方式。

编写 Docker Compose 文件

首先,我们需要创建一个名为 docker-compose.yml 的文件,并将以下内容添加到文件中:

复制代码
version: '3.8'

services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    restart: always
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        # 对外访问gitlab地址,可以使用本机IP
        external_url 'http://192.168.184.200:9080'
        gitlab_rails['gitlab_shell_ssh_port'] = 9022
    ports:
      - '9080:9080' # 注意宿主机和容器内部的端口要一致,否则external_url无法访问
      - '9443:443'
      - '9022:22'
    volumes:
      - '/opt/store/gitlab/config:/etc/gitlab'
      - '/opt/store/gitlab/logs:/var/log/gitlab'
      - '/opt/store/gitlab/data:/var/opt/gitlab'
    shm_size: '1g'


  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    container_name: "gitlab-runner"
    restart: always
    volumes:
      - '/opt/store/gitlab-runner:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock' #这个挂载是将宿主机上的docker socket挂载到了容器内,这样容器内执行的docker命令会被宿主机docker daemon最终执行

在这个 Docker Compose 文件中,我们定义了两个服务:GitLab 和 GitLab Runner。GitLab 服务使用 gitlab/gitlab-ce:latest 镜像,而 GitLab Runner 使用 gitlab/gitlab-runner:latest 镜像。我们设置了各种环境变量、端口映射和卷挂载,以确保 GitLab 和 GitLab Runner 正常运行,并且能够持久化数据。

启动服务

完成 Docker Compose 文件的编写后,我们可以使用以下命令来启动服务:

复制代码
docker-compose up -d

这将会启动 GitLab 和 GitLab Runner 服务,并且以后台模式运行。你可以使用 docker ps 命令来验证服务是否已经成功启动。

访问 GitLab

一旦服务启动成功,就可以通过浏览器访问 GitLab。在本例中,我们将 GitLab 设置为在 http://192.168.184.200:9080 地址上运行。只需在浏览器中输入该地址,即可访问 GitLab 界面。

第一次登录时,默认用户名是root,其初始密码需要通过以下方式获取:

复制代码
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

登录成功之后,需要更改初始密码,毕竟那一串初始密码根本记不住(*^_^*)

总结

通过Docker Compose的方式部署GitLab非常方便快捷,下一篇将介绍GitLab自带的CI/CD功能如何使用。

相关推荐
Sagittarius_A*2 小时前
Docker:渗透前置容器化核心基础
运维·安全·docker·容器
名字还没想好☜5 小时前
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB
运维·docker·容器·多阶段构建·镜像优化
hj2862517 小时前
Docker 核心知识点整理(网络 + Dockerfile + 原理 + 命令)
网络·docker·容器
zoipuus8 小时前
上传repo仓库到自己的gitlab
linux·gitlab·shell·全志·tina
梦想的颜色15 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
刘马想放假1 天前
Git 从入门到进阶:一篇吃透版本管理的实战指南
git·gitlab
极客先躯1 天前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
大E帝国子民11 天前
Docker 部署 RocketMQ 5
docker·容器·rocketmq
江湖有缘1 天前
【保姆级教程】使用Docker Compose一键搭建Picsur私有图床服务
java·docker·容器
java_logo1 天前
5 分钟共享打印机:用 Docker 一键部署 CUPS
运维·docker·容器·cups·网络打印机·共享打印机·docker部署cups