Gitlab 使用外部 PostgreSQL 方法
目錄
Gitlab 使用外部 PostgreSQL 方法
前言
一樣是因為最近的案子需求,所以就來研究一下 Gitlab 如果要使用外部的 PostgreSQL 如何設定,而新舊版本其實差不多,只是有部分指令已經不同
關於 Gitlab 與 PostgreSQL 關係
- 官方文件有說明,如果是使用
Omnibus GitLab
則會內建PostgreSQL
,且 Gitlab 僅有支援PostgreSQL - 當然目前的Docker也有包含 PostgreSQL 的版本
- 但如果是要使用外部的 PostgreSQL,則需要自行安裝 PostgreSQL,且版本需符合 Gitlab 所需的版本
- Gitlab 16.0 以後的版本,需要
PostgreSQL 13.0
以上 - Gitlab 15.0 以後的版本,預設使用
PostgreSQL 13.0
- Gitlab 13.7 以後的版本,建議
PostgreSQL 12.0
以上 - Gitlab 13.0 以前的版本,需要
PostgreSQL 11.0
以上 - Gitlab 12.8 以前的版本,需要
PostgreSQL 9.6
以上PostgreSQL 11.7
以下
- Gitlab 16.0 以後的版本,需要
安裝與設定
安裝 PostgreSQL
我這裡是使用Docker來安裝 PostgreSQL
,步驟如下:
-
使用
docker compose
安裝-
我在本地端建立一個資料夾
postgresql
來放置docker-compose.yml
檔案1 2
mkdir postgresql cd postgresql
-
我設定了一個路徑
export POSTGRESQL_HOME=/root/postgresql
-
建立
docker-compose.yml
檔案sudo vi docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
version: "3.7" services: postgres: image: postgres:13.11 container_name: postgres_13 restart: always volumes: - '$POSTGRESQL_HOME/data:/var/lib/postgresql/data' ports: - '5432:5432' environment: POSTGRES_DB: gitlabhq_production # Gitlab 預設的資料庫名稱 POSTGRES_USER: postgres POSTGRES_PASSWORD: 1234
-
確定你所在目錄是在
docker-compose.yml
檔案的目錄後執行docker-compose up -d
-
-
使用 Docker Engine 安裝
1 2 3 4 5 6 7 8
sudo docker run -d --name postgres_13 \ --restart always \ -p 5432:5432 \ -v $POSTGRESQL_HOME/data:/var/lib/postgresql/data \ -e POSTGRES_DB=eflab \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=1234 \ postgres:13.11
-
測試看看能不能連上,沒有相關工具的可以使用
pgadmin4
查看1 2 3 4 5
# 沒有其他工具執行下列Docker可以使用 pgadmin4,這裡設定的port號是20080,故瀏覽器輸入 http://localhost:20080 docker run -p 20080:80 \ -e 'PGADMIN_DEFAULT_EMAIL=user@example.com' \ -e 'PGADMIN_DEFAULT_PASSWORD=admin' \ -d dpage/pgadmin4:latest
這是我用DBeaver連線的畫面
更改Gitlab設定
-
進入到gitlab的容器內
1
docker exec -it gitlab bash
-
編輯
gitlab.rb
檔案1
vi /etc/gitlab/gitlab.rb
-
在VIM模式下搜尋
postgresql
,並將下列設定開啟1
/postgresql
1 2 3 4 5 6 7 8
# Disable the bundled Omnibus provided PostgreSQL postgresql['enable'] = false # 這裡要設定為false,不然會使用內建的PostgreSQL # PostgreSQL connection details gitlab_rails['db_adapter'] = 'postgresql' gitlab_rails['db_encoding'] = 'unicode' gitlab_rails['db_host'] = 'your IP/hostname of database server' gitlab_rails['db_password'] = '1234'
-
執行
sudo gitlab-ctl reconfigure
(執行後可能要等2分鐘左右)完成後會看到下列畫面