GitLab是什么
GitLab 是一個用于倉庫管理系統(tǒng)的開源項目怠苔,使用Git作為代碼管理工具郊供,并在此基礎(chǔ)上搭建起來的web服務(wù)和GitHub差不多昭齐,只不過是開源的含长。
為什么用docker安裝GitLab
docker真是個好東西,部署環(huán)境畔规,以及軟件安裝都特別方便局扶,所以我選擇使用docker來安裝GitLab。這里我選擇安裝中文版的GitLab叁扫。
一详民、安裝docker
docker安裝可以參照我之前的文章基于腳本安裝docker
二、使用 Docker Compose
正常部署時陌兑,可以使用 Docker Compose 來配置啟動沈跨。建立一個 docker-compose.yml,內(nèi)容如下:
version: '2'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:11.1.4'
restart: unless-stopped
hostname: 'gitlab.example.com'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 需要配置到 gitlab.rb 中的配置可以在這里配置兔综,每個配置一行饿凛,注意縮進(jìn)。
# 比如下面的電子郵件的配置:
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
# gitlab_rails['smtp_password'] = "password"
# gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
# gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- config:/etc/gitlab
- data:/var/opt/gitlab
- logs:/var/log/gitlab
volumes:
config:
data:
logs:
然后使用命令 docker-compose up -d
來啟動软驰,停止服務(wù)使用 docker-compose down
涧窒。
如果你的服務(wù)器有域名,將上面的 gitlab.example.com
替換為實際域名锭亏。
實驗時纠吴,也可以直接修改 /etc/hosts
方便測試。比如:
127.0.0.1 gitlab.example.com
三慧瘤、使用 Docker 命令啟動
直接使用 docker 命令要比使用 docker-compose 繁瑣一些戴已,但是可以達(dá)到一樣的效果。
首先锅减,Docker 容器數(shù)據(jù)應(yīng)該存儲于卷中糖儡,在這里我們使用最簡單的本地命名卷:
- gitlab-config 存儲 GitLab 配置信息
- gitlab-data 存儲數(shù)據(jù)庫
- gitlab-logs 存儲日志
然后,我們需要創(chuàng)建自定義網(wǎng)絡(luò)怔匣,從而讓容器運行于獨立的網(wǎng)絡(luò)中握联,區(qū)別于默認(rèn)網(wǎng)橋。
docker network create gitlab-net
準(zhǔn)備好后,開始運行 Gitlab 容器:
docker run -d \
--hostname gitlab.example.com \
-p 80:80 \
-p 443:443 \
-p 22:22 \
--name gitlab \
--restart unless-stopped \
-v gitlab-config:/etc/gitlab \
-v gitlab-logs:/var/log/gitlab \
-v gitlab-data:/var/opt/gitlab \
--network gitlab-net \
twang2218/gitlab-ce-zh:11.1.4
如果需要進(jìn)入容器修改配置文件金闽,可以用 docker exec
命令進(jìn)入容器:
$ docker exec -it gitlab bash
root@09f6e32c528c:/# vi /etc/gitlab/gitlab.rb
root@09f6e32c528c:/# gitlab-ctl reconfigure
Starting Chef Client, version 12.12.15
resolving cookbooks for run list: ["gitlab"]
...
如需停止服務(wù)纯露,直接運行 docker stop gitlab
。
如需卸載服務(wù)及相關(guān)內(nèi)容代芜,可以執(zhí)行:
docker stop gitlab
docker rm gitlab
docker network rm gitlab-net
docker volume rm gitlab-config gitlab-datagitlab-logs
注意事項
登錄
啟動 GitLab 后埠褪,第一次訪問時,會要求設(shè)置 root
用戶的密碼蜒犯,密碼不得小于8位。設(shè)置好后荞膘,就可以登錄使用了罚随。
對于早期版本,可以使用默認(rèn)的 root
用戶密碼 5iveL!fe
登錄羽资。
配置 SSH 端口
這里運行示例中淘菩,無論是使用 docker-compose.yml
還是 docker run
都使用的是 SSH 默認(rèn)端口 22 去映射容器 SSH 端口。其目的是希望比較自然的使用類似 git@gitlab.example.com:myuser/awesome-project.git
的形式來訪問服務(wù)器版本庫屠升。但是潮改,宿主服務(wù)器上默認(rèn)的 SSH 服務(wù)也是使用的 22 端口。因此默認(rèn)會產(chǎn)生端口沖突腹暖。
修改宿主的 SSH 端口
修改宿主的 SSH 端口汇在,使用非 22 端口。比如修改 SSHD 配置文件脏答,/etc/ssh/sshd_config
糕殉,將其中的 Port 22 改為其它端口號,然后 service sshd restart
殖告。這種方式比較推薦阿蝶,因為管理用的宿主 SSH 端口改成別的其實更安全。
修改容器的 SSH 端口
修改容器的端口映射關(guān)系黄绩,比如將 -p 22:22
改為 -p 2222:22
羡洁,這樣 GitLab 的 SSH 服務(wù)端口將是 2222。這樣做會讓使用 GitLab 的 SSH 克隆爽丹、提交代碼有些障礙筑煮。這種情況要改變用戶使用 Git 的鏈接方式。
要從之前的:
git clone git@gitlab.example.com:myuser/awesome-project.git
改為明確使用 ssh:// 的 URL 方式粤蝎。
git clone ssh://git@gitlab.example.com:2222/myuser/awesome-project.git