1. 程式人生 > >sameersbn/gitlab/latest(10/16版本)配置坑點記錄

sameersbn/gitlab/latest(10/16版本)配置坑點記錄

這次主要是用docker在host網路搭建gitlab,能在內網中使用git工具做到專案原始碼的託管,號稱幾行命令就能完成搭建任何軟體環境docker其實也有使用的技巧。

但是這次踩坑不是因為docker的問題,而是因為我在對照著書上使用docker-compose時並沒有在給映象tag附上書上的版本號,遇到了一系列的bug。我在這裡回溯一邊,總結一下,以免以後再犯,並且將不懂的知識在本文中補充,並啃完。

首先引發bug的原因前面已經說,由於gitlab的版本不同,在docker上配置環境變數就有一些變化。

這是8.4.4版本的docker-compose.yml:

gitlab-postgresql:
image: sameersbn/postgresql:9.4-12
environment:
– DB_USER=gitlab
– DB_PASS=password
– DB_NAME=gitsql
gitlab-redis:
image: sameersbn/redis

gitlab:
image: sameersbn/gitlab:8.4.4
links:
– gitlab-redis:redisio
– gitlab-postgresql:postgresql
ports:
– “10088:80”
– “10022:22”
environment:
– GITLAB_PORT=10088
– GITLAB_SSH_PORT=10022
– GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string

下面是10月16號前最新版本 的docker_compose.yml:

gitlab-postgresql:
image: sameersbn/postgresql
environment:
– DB_USER=gitlab
– DB_PASS=password
– DB_NAME=gitsql
– DB_EXTENSION=pg_trgm
gitlab-redis:
image: sameersbn/redis

gitlab:
image: sameersbn/gitlab
links:
– gitlab-redis:redisio
– gitlab-postgresql:postgresql
ports:
– “10088:80”
– “10022:22”
environment:
– GITLAB_PORT=10088
– GITLAB_SSH_PORT=10022
– GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string
– GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-str
in
– GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-strin

其實當中主要區別在於:postgresql 環境配置中多了一句:DB_EXTENSION=pg_trgm

gitlab環境配置中多兩句:

– GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-str
in
– GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-strin

我並不清楚這是維護映象的人為了使用的靈活性必須填寫這些選項,還是處於版本更新的需要 ,導致我一直以為是我的機器與映象不相容,其實這是我犯得第一個錯誤,並沒有仔細看錯誤提示資訊,也沒仔細研究錯誤發生的情況,預設的第一解決辦法就是重灌再重灌,一直從容器重灌到映象,再重啟了docker的守護程式,挺傻的。出現的主要bug表現是:gitlab容器啟動就退出, 這裡積累了一個使用docker的小技巧,使用docker logs 可以列印容器的日誌,從而知道導致退出的錯誤資訊,gitlab環境配置的兩句話再啟動中報錯,他會提示你新增上這兩條環境變數,在連結postgresql中它會提示error:。。。pg_trgm 。。。,剛開始我並不知道這是什麼意思,後來才知道PostgrSQL有個模組叫pg_trgm,可以對字串來進行比較相似度,並通過加GIST或者GIN索引來達到提速的效果。在一般的RDBMS中這種需求都會進行全表掃描的,但是PG如果加了這個模組,在一定場景下就可以使用索引來提速了。

成功搭建環境後,下一步我將搭建一個區域網,能讓網路中的計算機能訪問到這臺機器host網路中的docker容器服務,又是新的踩坑的旅程!