Gitlab docker版本安装

docker 新建Gitlab容器并配置运行

下载离线镜像

在有网的电脑上拉取镜像

bash 复制代码
#在有网的电脑上拉取镜像
docker pull gitlab/gitlab-ce:19.2.0-ce.0
#打包成压缩包
docker save -o gitlab-ce-19.2.0.tar gitlab/gitlab-ce:19.2.0-ce.0
#压缩包传到另一台离线电脑,将其导入
docker load -i gitlab-ce-19.2.0.tar

创建镜像前准备

端口

Gitlab需要开放80、443、22端口

80:http默认管理页面

443:https默认管理页面端口

22 :使用ssh方式进行clone、push使用,如git@gitlab.example.com:group/repo.git走的端口

可以映射到7779端口

目录挂载

/etc/gitlab 配置文件(包含SSL证书)

/var/log/gitlab 日志文件

/var/opt/gitlab 数据持久化目录

统一挂载到/container_data/gitlab的config log data目录下

防火墙配置、创建挂载目录、初始化容器并挂载
bash 复制代码
#!/bin/bash
#宿主机放行防火墙端口
firewall-cmd --permanent --add-port=7777/tcp
firewall-cmd --permanent --add-port=7778/tcp
firewall-cmd --permanent --add-port=7779/tcp
firewall-cmd --reload
#验证
firewall-cmd --list-ports
#创建挂载目录
mkdir -p /container_data/gitlab/{config,logs,data}
#创建虚拟机
docker run -d \
  --name gitlab \
  --restart always \
  -p 80:80 \
  -p 443:443 \
  -p 7779:22 \
  -v /container_data/gitlab/config:/etc/gitlab \
  -v /container_data/gitlab/logs:/var/log/gitlab \
  -v /container_data/gitlab/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:19.2.0-ce.0 

等待几分钟Gitlab初始化

获取初始root密码

可以进容器拿,也可以在挂载目录拿

bash 复制代码
#进容器
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
#从挂载目录
grep 'Password:' /container_data/gitlab/config/initial_root_password

启动后可以直接访问IP访问到管理界面,

但仓库内配置的默认地址依然为容器名,需要更改

需要进入配置文件配置Gitlab

配置Gitlab

配置通过HTTP、SSH访问

bash 复制代码
cat >> /container_data/gitlab/config/gitlab.rb <<'EOF'

#设置默认http管理端口(仓库配置页面显示的那个),可以写IP也可以写域名
#默认端口80,如果更改映射需要同步改如7777:7777,默认80:80
external_url 'http://10.12.3.161'
#默认为80不用配置,需要修改端口时配置
#nginx['listen_port'] = 80

#不写gitlab_ssh_host也可以,它会自动从external_url自动获取到IP地址和域名
#gitlab_rails['gitlab_ssh_host'] = '10.12.3.161'
#在物理机上需要同步改机器的ssh端口和gitlab的ssh端口,在容器中采用映射的方式7779:22
#这里的ssh port设置不是在容器内部改到7779,容器内部仍为22,但是仓库界面配置会显示7779
#实际访问使用7779访问
gitlab_rails['gitlab_shell_ssh_port'] = 7779
gitlab_rails['time_zone'] = 'Asia/Shanghai'
EOF

#如果是在物理机部署需要reconfigure
#docker部署时直接重启容器也可以,进入容器recongigure也可以
#docker exec -it gitlab gitlab-ctl reconfigure

#修改配置后直接重启容器,它会自动重新配置
docker restart gitlab

此时Gitlab部署已经完成

测试
  1. 测试push代码是否成功
bash 复制代码
#在gitlab新建一个项目
ssh推送链接
ssh://git@10.12.3.161:7779/my_group1/my_project2.git

#测试ssh push代码
git init 
touch 1.txt
git add .
git commit -m "first commit"
git remote add origin ssh://git@10.12.3.161:7779/my_group1/my_project2.git
git push origin master

#测试http push212
git remote set-url origin http://10.12.3.161/my_group1/my_project2.git

git push origin master
#需要输入gitlab的账号密码
  1. 测试克隆代码是否成功
bash 复制代码
#ssh方式
git clone ssh://git@10.12.3.161:7779/my_group1/my_project2.git
#http方式
git clone http://10.12.3.161/my_group1/my_project2.git

可选

设置https

1.生成自签名SSL证书(仅测试用)

域名为测试域名gitlab.example.com

bash 复制代码
#证书放在容器的/etc/gitlab/ssl目录下,需要创建ssl文件夹
#映射过来是/container_data/gitlab/config/ssl
#1.创建目录存储,私钥和公钥分开,private下存放私钥,其他存放在公开
mkdir -p /container_data/gitlab/config/ssl/{private,certs}
#生成私钥(输出是nginx-selfsigned.key私钥文件)
openssl genpkey -algorithm RSA -out /container_data/gitlab/config/ssl/private/nginx-selfsigned.key -pkeyopt rsa_keygen_bits:2048
#生成CSR签名请求(输出是nginx-selfsigned.csr公钥)
openssl req -new -key /container_data/gitlab/config/ssl/private/nginx-selfsigned.key -out /container_data/gitlab/config/ssl/certs/nginx-selfsigned.csr
#Common Name (eg, your name or your server's hostname) []写 gitlab.example.com,其他不填
#自签名生成证书(过期365天,输出是nginx-selfsigned.crt证书)
openssl x509 -req -days 365 -in /container_data/gitlab/config/ssl/certs/nginx-selfsigned.csr -signkey /container_data/gitlab/config/ssl/private/nginx-selfsigned.key -out /container_data/gitlab/config/ssl/certs/nginx-selfsigned.crt

key 放在private文件夹下,csr和crt放在certs文件夹下

2.更改Gitlab配置

https默认443端口

bash 复制代码
vim /container_data/gitlab/config/gitlab.rb
#改为从http改为https域名
external_url 'https://gitlab.example.com'
#如果前面external_url写了https,listen_https这里可以不写
nginx['listen_https'] = true
#80重定向到443打开
nginx['redirect_http_to_https'] = true
#指定crt和key的位置,注意是docker容器内的绝对路径
nginx['client_max_body_size'] = '2048m'
nginx['ssl_certificate'] = "/etc/gitlab/ssl/certs/nginx-selfsigned.crt"  
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/private/nginx-selfsigned.key" 

#修改ssh端口(可选)
gitlab_rails['gitlab_shell_ssh_port'] = 7779
gitlab_rails['time_zone'] = 'Asia/Shanghai'

https修改端口,443:443改为7778:7778

容器设置

bash 复制代码
#创建虚拟机
docker run -d \
  --name gitlab \
  --restart always \
  -p 80:80 \
  -p 7778:7778 \
  -p 7779:22 \
  -v /container_data/gitlab/config:/etc/gitlab \
  -v /container_data/gitlab/logs:/var/log/gitlab \
  -v /container_data/gitlab/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:19.2.0-ce.0 

Gitlab设置

bash 复制代码
vim /container_data/gitlab/config/gitlab.rb
#改为从http改为https域名
external_url 'https://gitlab.example.com:7778'     
#如果前面external_url写了https,listen_https这里可以不写
nginx['listen_https'] = true
nginx['https_port'] = 7778
nginx['client_max_body_size'] = '2048m'
#80重定向到443打开
nginx['redirect_http_to_https'] = true
#指定crt和key的位置,注意是docker容器内的绝对路径
nginx['ssl_certificate'] = "/etc/gitlab/ssl/certs/nginx-selfsigned.crt"  
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/private/nginx-selfsigned.key" 

#修改ssh端口(可选)
gitlab_rails['gitlab_shell_ssh_port'] = 7779
gitlab_rails['time_zone'] = 'Asia/Shanghai'

客户端配置host文件

bash 复制代码
windows
C:\Windows\System32\drivers\etc 下host文件
10.12.3.161 gitlab.example.com
相关推荐
张文君3 小时前
docker使用代理拉取镜像
运维·docker·容器
2401_834636994 小时前
保姆级 Kubernetes 部署教程|从原理到三节点集群落地
云原生·容器·kubernetes
陌路204 小时前
Docker教程从入门到精通(0基础)
运维·docker·容器
初级炼丹师(爱说实话版)5 小时前
Ubuntu24.04 Docker+vLLM+qianwen2.5-coder-32B部署文档
docker·容器·vllm
童槿顏丶6 小时前
GitLab部署到Linux
linux·运维·gitlab
ᥬ 小月亮10 小时前
SonarQube使用教程(Docker安装)
运维·docker·容器
在世修行11 小时前
Windows 上 Docker Desktop 部署 MySQL + TDengine 全过程(含 WSL 报错与镜像加速排障实战)
windows·mysql·docker·tdengine
自律最差的编程狗12 小时前
从零搭建:VMware + Ubuntu + Docker + MySQL 完整指南
mysql·ubuntu·docker
老虎海子13 小时前
Dockerfile 零基础:指令详解 + Compose 对比 + 前端镜像实战
开发语言·前端·docker·rpc
天空之外13613 小时前
Docker安装MySQL 8.4 LTS、Docker安装Redis 7.4.x、Docker安装MinIO
java·mysql·docker