Docker部署GitLab私服
1、拉取镜像
docker pull gitlab/gitlab-ce
2、创建数据挂载目录
srv 为 linux 下默认服务数据存储目录
其实不需要显示的创建数据存储目录,因为 Docker run 容器挂载时会自动创建不存在的文件目录。
mkdir -p /srv/gitlab/config
mkdir -p /srv/gitlab/logs
mkdir -p /srv/gitlab/data
mkdir -p /srv/gitlab/logs/reconfigur
3、启动容器
docker run -d \
-p 10443:443 \
-p 18090:80 \
-p 10022:22 \
--privileged=true \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
-v /srv/gitlab/logs/reconfigure:/var/log/gitlab/reconfigure \
gitlab/gitlab-ce:latest
4、启动成功之后停止容器,修改生成的配置文件的内容(公网ip后不加端口)
cat >> /srv/gitlab/config/gitlab.rb << EOF
external_url 'http://172.16.0.9'
gitlab_rails['gitlab_ssh_host'] = '172.16.0.9'
gitlab_rails['gitlab_shell_ssh_port'] = 10022
unicorn['worker_processes'] = 2
EOF
32行: # external_url 'GENERATED_EXTERNAL_URL' => external_url 'http://172.16.0.9'
66行: # gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com' => gitlab_rails['gitlab_ssh_host'] = '172.16.0.9'
651行:# gitlab_rails['gitlab_shell_ssh_port'] = 22 => gitlab_rails['gitlab_shell_ssh_port'] = 10022
5、防火墙开放 18090 端口
firewall-cmd --permanent --zone=public --add-port=18090/tcp --permanent
firewall-cmd --reload
6、重启容器
docker restart gitlab
7、重启容器报错(可能)
报错信息:
Error response from daemon: Cannot restart container gitlab: driver failed programming external connectivity on endpoint gitlab (7053a3c88de7688a861b393ec7995c0b941cc0288e2958b2bf03fb80db056e7b): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 18090 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
解决方案:
重启docker服务后再启动容器
systemctl restart docker
docker start gitlab
8、docker-compose安装gitlab
进入 /usr/local/src/other/gitlab
目录
mkdir /usr/local/src/other/gitlab
cd /usr/local/src/other/gitlab
创建docke-compose.yml
文件
vim docke-compose.yml
version: '3'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
privileged: true #获取宿主机root权限(特殊权限)
restart: always
hostname: 'gitlab.example.com'
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
ports:
- "10443:443"
- "10080:80"
- "10022:22"
environment:
gitlab_omnibus_config: |
external_url 'http://gitlab.example.com'
gitlab_rails["time_zone"] = 'Asia/Shanghai'
gitlab_rails['gitlab_shell_ssh_port'] = 10022
shm_size: '256m'
执行创建命令
docker compose up -d
启动的注意事项
gitlab 体系庞大,所以启动时间较长并大量占用内存,所以执行启动命令后若访问http://xxxx:10080可能优先出现无法访问界面。
等待几分钟即可
9、访问172.16.0.9:18090(10080)
10、设置root账号密码
# 进入容器内部 (先通过 docker ps -a 查看容器Id)
docker exec -it gitlab /bin/bash
# 这一步可能很慢,耐心等待
gitlab-rails console -e production
# 查看用户管理员
user = User.where(username:"root").first
# 或者
user = User.where(id: 1).first
# 配置新密码 新密码建议 大于 8位 不然保存的时候会提示错误
user.password = "xxxxxxxx"
# 确认密码
user.password_confirmation = "xxxxxxxx"
# 保存
user.save!
11、登录root账号
12、注册新用户
点击注册之后会提示
翻译:您已经注册成功。但是,我们无法为您登录,因为您的帐户正在等待您的GitLab管理员的批准。
13、管理员账号审核批准
14、审核之后再次登录刚刚申请的账号
15、gitlab设置中文或者其他语言,gitlab汉化
登录后 ----> setting ----> preferences ----> language ----> 简体中文。然后别忘记刷新。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 奇怪的阿峰
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果