GitLab是什麼
GitLab 是一個用于倉庫管理系統的開源項目,使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務和GitHub差不多,隻不過是開源的。
為什麼用docker安裝GitLab
docker真是個好東西,部署環境,以及軟體安裝都特别友善,是以我選擇使用docker來安裝GitLab。這裡我選擇安裝中文版的GitLab。
一、安裝docker
docker安裝可以參照我之前的文章基于腳本安裝docker
二、使用 Docker Compose
正常部署時,可以使用 Docker Compose 來配置啟動。建立一個 docker-compose.yml,内容如下:
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 中的配置可以在這裡配置,每個配置一行,注意縮進。 # 比如下面的電子郵件的配置: # gitlab_rails['smtp_enable'] = true # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" # gitlab_rails['smtp_port'] = 465 # gitlab_rails['smtp_user_name'] = "[email protected]" # 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'] = '[email protected]' ports: - '80:80' - '443:443' - '22:22' volumes: - config:/etc/gitlab - data:/var/opt/gitlab - logs:/var/log/gitlabvolumes: config: data: logs:
然後使用指令 docker-compose up -d 來啟動,停止服務使用 docker-compose down。 如果你的伺服器有域名,将上面的 gitlab.example.com 替換為實際域名。 實驗時,也可以直接修改 /etc/hosts友善測試。比如:
127.0.0.1 gitlab.example.com
三、使用 Docker 指令啟動
直接使用 docker 指令要比使用 docker-compose 繁瑣一些,但是可以達到一樣的效果。 首先,Docker 容器資料應該存儲于卷中,在這裡我們使用最簡單的本地命名卷:
- gitlab-config 存儲 GitLab 配置資訊
- gitlab-data 存儲資料庫
- gitlab-logs 存儲日志 然後,我們需要建立自定義網絡,進而讓容器運作于獨立的網絡中,差別于預設網橋。
docker network create gitlab-net
- 準備好後,開始運作 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
- 如果需要進入容器修改配置檔案,可以用 docker exec 指令進入容器:
$ docker exec -it gitlab [email protected]:/# vi /etc/gitlab/[email protected]:/# gitlab-ctl reconfigureStarting Chef Client, version 12.12.15resolving cookbooks for run list: ["gitlab"]...
- 如需停止服務,直接運作 docker stop gitlab。
如需解除安裝服務及相關内容,可以執行:
docker stop gitlabdocker rm gitlabdocker network rm gitlab-netdocker volume rm gitlab-config gitlab-datagitlab-logs
注意事項
登入
啟動 GitLab 後,第一次通路時,會要求設定 root 使用者的密碼,密碼不得小于8位。設定好後,就可以登入使用了。 對于早期版本,可以使用預設的 root 使用者密碼 5iveL!fe 登入。
配置 SSH 端口
這裡運作示例中,無論是使用 docker-compose.yml 還是 docker run 都使用的是 SSH 預設端口 22 去映射容器 SSH 端口。其目的是希望比較自然的使用類似 [email protected]:myuser/awesome-project.git的形式來通路伺服器版本庫。但是,宿主伺服器上預設的 SSH 服務也是使用的 22 端口。是以預設會産生端口沖突。
修改宿主的 SSH 端口
修改宿主的 SSH 端口,使用非 22 端口。比如修改 SSHD 配置檔案,/etc/ssh/sshd_config,将其中的 Port 22 改為其它端口号,然後 service sshd restart。這種方式比較推薦,因為管理用的宿主 SSH 端口改成别的其實更安全。
修改容器的 SSH 端口
修改容器的端口映射關系,比如将 -p 22:22 改為 -p 2222:22,這樣 GitLab 的 SSH 服務端口将是 2222。這樣做會讓使用 GitLab 的 SSH 克隆、送出代碼有些障礙。這種情況要改變使用者使用 Git 的連結方式。 要從之前的:
git clone [email protected]:myuser/awesome-project.git
改為明确使用 ssh:// 的 URL 方式。
git clone ssh://[email protected]:2222/myuser/awesome-project.git