Docker本地部署 gitlab(windows&linux)
1. 版本介绍
名词解释:
ce - 社区版(免费) ee - 企业版(收费) jh - 极狐GitLab 中国发行版(包含 CE 和 EE 功能,基础功能免费)
1.1 官方
1.官方:about.gitlab.com/
- 官方安装文档:about.gitlab.com/install/
2.官方ce版本deb安装包:packages.gitlab.com/gitlab/gitl...
3.官方docker镜像:hub.docker.com/r/gitlab/gi...
4.官方docker安装教程:
ps:注意此为ee版(企业版),需在拉取镜像时配置替换为gitlab-ce
5.官方配置说明:docs.gitlab.com/install/doc...
1.2 国内代理
1.中文版介绍:gitlab.cn/
- 极狐是Gitlab的国内代理
2.国内官方安装文档:gitlab.cn/install Ubuntu存在apt install的简易安装方式
- 未对Windows提供安装包
2. 初始化部署(windows&linux)
2.1部署
2.1.1 系统准备
windows系统需要安装ubuntu(Hyper-V资源开销大)
csharp
网络不好的请查看:https://learn.microsoft.com/zh-cn/windows/wsl/ 下的"旧版本的手动安装步骤"
网络良好的流程:
1. 控制面板->程序->启用或关闭Windows功能
--找到'虚拟机平台'与"适用Linux的Windows子系统" 勾选后点击确定并重启电脑
2. 管理员身份运行Powershell
wsl --install 下载安装wsl(从微软下载
)
wsl --set-default-version 2 设置默认版本WSL2
wsl --list --verbose 查看版本
# NAME STATE VERSION
# * Ubuntu Running 2
wsl 进入ubuntu
linux 系统不用管
2.1.2 安装docker
windows
rust
docker官网安装:https://www.docker.com/products/docker-desktop/
1. 下载安装Docker Desktop Download for Windows(版本)
2. 无需登录打开docker软件进入setting->General
确保 Use the WSL 2 based engine 被勾选
3. setting->Resources->WSL integration
确保你的ubuntu已被集成
4. 配置镜像源 setting -> Docker Engine 下加入:
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.1ms.run",
"https://docker.m.daocloud.io",
"https://docker.unsee.tech",
"https://docker.1panel.live",
"https://hub.rat.dev",
"https://docker.rainbond.cc"
]
ps:Docker Desktop 自带docker compose
linux
lua
1.安装 docker (以及 docker compose)
sudo wget -qo-https://get.docker.com/| sh 安装docker
docker --version
2.可选:将当前用户添加到docker用户组
sudo usermod -aG docker <用户名> 后续执行docker命令时,不必添加sudo
3. GitLab镜像下载(如果.yaml文件配置了image这条便不需要)
docker pull gitlab/gitlab-ce:latest 最新版(官方)
"latest"可以换成指定版本号
4. 查看版本
docker --version
docker compose --version
2.1.3 docker-compose.yaml 文件编写
请选好自己指定的位置创建logs、data、config文件夹
同目录创建docker-compose.yaml文件:
yaml
services: #服务
gitlab: #容器
# image: gitlab/gitlab-ce #官方社区版本
image: registry.gitlab.cn/omnibus/gitlab-ce:latest #极狐版 镜像
container_name: gitlab #容器名
user: root
restart: always
ports: # 接口映射 宿主机端口:docker内部端口 监听外部端口映射docker内部端口
- "9443:443"
- "9080:80"
- "9022:22"
volumes: # 数据卷地址
- "./config:/etc/gitlab"
- "./logs:/var/log/gitlab"
- "./data:/var/opt/gitlab"
shm_size: 1g # 共享内存大小 能给大给大点根据各人电脑性能
logging: #日志
driver: json-file
options:
max-size: "300m" # 日志存储大小 自定义大小
max-file: "3"
2.1.4 启动docker
在.yaml文件同级目录下执行:
docker compose up -d (-d后台运行)
docker compose ps 查看容器是否运行成功,状态为healthy则为成功
docker compose down 关闭运行并删除容器
docker compose stop 停止容器,不删除(推荐)
docker compose start 启动容器
docker compose logs -f 查看日志等待初始化
ps:gitlab初始化根据电脑性能可能需要2-10分钟之间
2.1.5 网络访问
初始化成功后访问方式 (.yaml文件监听默认80端口映射 9080)
本地访问:localhost:9080
私网访问:私网ip:9080
公网访问:需要配置
-
外网穿透(自行查询)
-
SSH 隧道转发
ssh -R 9080:localhost:9080 root@你的云服务器IP做好nginx代理配置
-
申请公网ip(收费)
2.2 初始化
2.2.1 登录
访问成功之后登录
密码在宿主机上查询
docker exec -it gitlab cat /etc/gitlab/initial_root_password
2.2.2 其他操作
设置时区
汉化程度
仓库头设置(ssh)
ps: 都在web页面里设置
CI/CD自动化部署
1. 注册gitlab-runner
1.1在docker-compose.yaml 配置
yaml
#如果是和gitlab写一起那就相当于是 两个容器放一个服务里,这个"services:" 可以不写
services:
gitlab-runner:
image: gitlab/gitlab-runner:latest
# image: registry.gitlab.cn/runner/gitlab-runner:latest
container_name: gitlab-runner
restart: always
volumes:
- /srv/gitlab-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai # 设置时区,可选
logging:
driver: json-file
options:
max-size: "10m" # 日志存储大小
max-file: "3"
PS:同服务内的容器相互通信端口是docker容器的端口不是外部端口,这点在runner注册时会用到
运行 docker compose up -d
1.1.2 获取gitlab token令牌
确定Runner的作用范围:
- 项目级Runner(最常用):进入你的项目 → 左侧菜单 设置 → CI/CD → 展开"Runners"部分 → 点击 "新建项目Runner"。
- 群组级Runner:进入群组 → 设置 → CI/CD → Runners → "新建群组Runner"。
- 实例级Runner(需要管理员权限):点击左侧边栏底部 "管理员" → CI/CD → Runners → "新建实例Runner"。
填写配置并创建:
- 在弹出的窗口中,填写Runner的描述(例如
docker-runner)、标签(例如docker,build)等信息。 - 点击 "创建Runner"。
获取身份验证令牌:
- 创建成功后,页面会显示一条命令,其中包含一个以
glrt-开头的令牌,这就是身份验证令牌 (Authentication Token)。请立即保存好这个令牌,因为关闭页面后就无法再查看。
1.1.3 注册runner
- 进入已运行的 gitlab-runner 容器
docker exec -it gitlab-runner sh
-
执行注册命令
gitlab-runner register -
录入信息
提示信息 录入内容 说明 GitLab URL http://gitlab:80 容器间通信 不是外部端口号9080 Registration token glrt-开头的 获取的token令牌 Runner description 例:docker-runner runner描述 名称 Executor docker 选择Docker执行器
一键式命令:
arduino
docker exec -it gitlab-runner gitlab-runner register \
--non-interactive \
--url "http://gitlab:80" \
--token "你的glrt-xxxxx令牌" \
--executor "docker" \
--docker-image "alpine:latest" \
--description "docker-runner" \
--tag-list "docker,build"
看到:
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
则为成功注册
2 流水线runner
2.1 创建项目&配置
关于ssh配置,项目上传不做过多赘述
1.2.2 .gitlab-ci.yml文件
yaml
stages: # 生命一共几个步骤
- build
- test
- deploy
build: # 这是job名称 可以随便写
stage: build # 这个对应上面的stages
tags:
- myProject # tags指定的runner来做这步工作
script: # 执行代码
- echo "代码编译..."
test:
stage: test
tags:
- myProject
script:
- echo "测试代码..."
deploy:
stage: deploy
tags:
- myProject
script:
- echo "测试部署项目..."
- echo "测试部署完成..."
#将当前的index.html推送发布到上线的服务器上(需要做免交互ssh配置:自行查询)
# - scp index.html root@127.0.0.1:/usr/share/nginx/html/
ps:更复杂的配置请查看