Docker搭建私服GitLab(填坑记录)

本文详述在Docker中部署GitLab的步骤及注意事项,重点解析external_url配置问题,确保GitLab服务正常访问与检出地址正确显示端口号。

Docker入门视频教程https://ke.qq.com/course/2705742?tuin=a3e3fb1

个人博客纯净版

http://www.51ufo.cn/%E8%BF%90%E7%BB%B4/2020/06/04/Docker%E8%BF%9B%E9%98%B63-Docker%E6%90%AD%E5%BB%BA%E7%A7%81%E6%9C%8DGitLab-%E5%A1%AB%E5%9D%91%E8%AE%B0%E5%BD%95.html

 

作者在Docker笔记(持续更新)提到如何在Docker中安装GitLab,在此存在一个坑,作者觉得很有必要单开一篇文章单独将(希望让其他小伙伴能够通过标题搜到这篇文章,减少弯路)想必看到这篇文章的伙伴存在一个疑惑,为什么我在external_url设置ip+port却无法访问到GitLab,如果直接设置成ip地址在项目的checkout地址一栏,其git地址却不包含端口号,导致http的checkout地址不可用。

docker-gitlab.webp

问题的原因就出在external_url地址设置上。

GitLab默认的http访问端口号为80端口,如果想更改端口号,一般是通过docker run时设置端口映射,将80端口映射为其他端口。例如:

docker run \
--detach \
--publish 8443:443 \
--publish 8090:80 \
--name gitlab \
--restart unless-stopped \
-v /mnt/gitlab/etc:/etc/gitlab \
-v /mnt/gitlab/log:/var/log/gitlab \
-v /mnt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

这里将GitLab的http端口改为8090,如果你这时修改external_url地址为http://ip:8090,那GitLab肯定访问不了,因为你已经将内部的端口号修改为8090端口了,而你通过docker run映射出来的端口号是80端口,所以不可能访问到。那该怎么办?

既然你已经将内部的端口号由80端口改为8090端口,这时候你就将容器停止并删除,但是不要将映射的配置文件删除(gitlab.rb文件),docker在删除容器的时候不会将映射的文件删除。在此运行docker run命令,如下

docker run \
--detach \
--publish 8443:443 \
--publish 8090:8090 \
--name gitlab \
--restart unless-stopped \
-v /mnt/gitlab/etc:/etc/gitlab \
-v /mnt/gitlab/log:/var/log/gitlab \
-v /mnt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

注意这里映射的端口为8090端口,根据自己设置的external_url端口号进行调整 接下来就能访问GitLab了,并且在checkout检出地址栏中,http地址端口号也正确了。

标签Docker Git

在Linux系统上搭建GitLab私服有不同的方式,以下为详细步骤。 ### 使用常规安装方式(以CentOS 7为例) 1. **前期准备** - 打开xshell,登陆到主机:`ssh root@192.168.1.1` - 关闭防火墙:`systemctl stop firewalld` - 禁止防火墙开机启动:`systemctl disable firewalld` - 关闭Linux强制访问控制安全策略,编辑`/etc/sysconfig/selinux`文件,将`SELINUX=enforcing`修改为`SELINUX=disabled` - 重启系统使配置生效:`reboot` - 重启后,使用`getenforce`查看selinux策略是否被禁用(显示`disabled`为被禁用) 2. **安装依赖包和GitLab** - 安装GitLab的依赖包:`yum install curl policycoreutils openssh-server openssh-clients postfix` - 下载GitLab yum仓库源:`curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash` - 开启邮件服务: - 启动邮件服务:`systemctl start postfix` - 设置为开机启动:`systemctl enable postfix` - 安装GitLab-ce社区版本:`yum -y install gitlab-ce` 3. **配置** - 使用Openssl创建私有密钥: - 创建ssl文件夹:`mkdir -p /etc/gitlab/ssl` - 生成密钥:`openssl genrsa -out "/etc/gitlab/ssl/gitlab.example.com.key" 2048` - 使用openssl生成csr证书:`openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"` 4. **启动和管理服务** - 启动服务:`sudo gitlab-ctl reconfigure` - 修改默认的配置文件:`sudo vim /etc/gitlab/gitlab.rb` - 检查GitLab:`gitlab-rake gitlab:check SANITIZE=true --trace` - 查看服务状态:`sudo gitlab-ctl status` - 启动所有GitLab组件:`sudo gitlab-ctl start` - 停止所有GitLab组件:`sudo gitlab-ctl stop` - 重启所有GitLab组件:`sudo gitlab-ctl restart` - 查看日志:`sudo gitlab-ctl tail nginx` [^2][^3] ### 使用Docker方式 1. **安装特定版本的Docker Engine(可选)** 列出并排序存储库中可用的版本:`yum list docker-ce --showduplicates | sort -r`,然后选择并安装合适版本。 2. **查找镜像、拉取镜像** - 查找GitLab镜像:`docker search gitlab` - 拉取GitLab最新镜像:`docker pull gitlab/gitlab-ce:latest` 3. **运行GitLab容器** 创建目录:`mkdir -p /data/gitlab` 运行容器: ```bash docker run --detach \ --hostname gitlab.sca.com \ --publish 443:443 --publish 80:80 --publish 2222:22 \ --name gitlab \ --restart always \ --shm-size 256m \ --volume /data/gitlab/config:/etc/gitlab \ --volume /data/gitlab/logs:/var/log/gitlab \ --volume /data/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest ``` 注意要添加`--shm-size 256m`,否则页面会经常报500错误。这里映射容器内443到宿主机的443端口8080端口、22到2222端口,顺序上分别是HTTPS端口、HTTP端口、SSH端口,设置别名为gitlab [^4][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值