作者在Docker筆記(持續(xù)更新)提到如何在Docker中安裝GitLab,在此存在一個(gè)坑,作者覺得很有必要單開一篇文章單獨(dú)將(希望讓其他小伙伴能夠通過標(biāo)題搜到這篇文章,減少?gòu)澛罚?br>
想必看到這篇文章的伙伴存在一個(gè)疑惑,為什么我在external_url設(shè)置ip+port卻無(wú)法訪問到GitLab,如果直接設(shè)置成ip地址在項(xiàng)目的checkout地址一欄,其git地址卻不包含端口號(hào),導(dǎo)致http的checkout地址不可用。

image.png
問題的原因就出在external_url地址設(shè)置上。
GitLab默認(rèn)的http訪問端口號(hào)為80端口,如果想更改端口號(hào),一般是通過docker run時(shí)設(shè)置端口映射,將80端口映射為其他端口。例如:
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 8443:443 --publish 8080:80 --publish 8022:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
這里將GitLab的http端口改為8080,如果你這時(shí)修改external_url地址為http://ip:8080,那GitLab肯定訪問不了,因?yàn)槟阋呀?jīng)將內(nèi)部的端口號(hào)修改為8080端口了,而你通過docker run映射出來(lái)的端口號(hào)是80端口,所以不可能訪問到。那該怎么辦?
既然你已經(jīng)將內(nèi)部的端口號(hào)由80端口改為8080端口,這時(shí)候你就將容器停止并刪除,但是不要將映射的配置文件刪除(gitlab.rb文件),docker在刪除容器的時(shí)候不會(huì)將映射的文件刪除。在此運(yùn)行docker run命令,如下
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 8443:443 --publish 8080:8080 --publish 8022:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
注意這里映射的端口為8080端口,根據(jù)自己設(shè)置的external_url端口號(hào)進(jìn)行調(diào)整
接下來(lái)就能訪問GitLab了,并且在checkout檢出地址欄中,http地址端口號(hào)也正確了。

image.png