2017年6月11日 星期日

使用 Docker 架設 Git server

目標,透過反向代理來存取 git。雖然可以很輕易的架一個VM,但也是很煩,就透過反向代理來存取Docker 上架設的 Git server,會省事很多。

就用最多人用的吧 https://github.com/sameersbn/docker-gitlab
參考官網的「Deploy to a subdirectory (relative url root)」的段落。

有中文的說明,看起來更快些
https://jigsawye.com/2015/09/25/gitlab-ce-in-docker/

開始,沒有懸念的,直接拉最新版的吧。另外,需要用到 postgresql 和 redis,就一起拉下來吧。
docker pull sameersbn/postgresql 
docker pull sameersbn/redis
docker pull sameersbn/gitlab

拉下來的 image 的大小,gitlab 大約 1.288GB,postgresql 約 231.5 MB,redis 約 203.4 MB。

先用手動啟動吧,成功後,再來調設定檔。
啟動 PostgreSQL container:
root #docker run --name gitlab-postgresql -d \
    --env 'DB_NAME=gitlabhq_production' \
    --env 'DB_USER=gitlab' --env 'DB_PASS=password' \
    --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
    sameersbn/postgresql:latest

啟動 Redis container:
root #docker run --name gitlab-redis -d \
    --volume /srv/docker/gitlab/redis:/var/lib/redis \
    sameersbn/redis:latest

最後啟動 Gitlab container。這邊要注意我除了照原文件之外,還額外加上 GITLAB_HOST,因為我的建置環境不在本機上,所以要加上該環境的 ip,否則 user 的大頭貼會是死圖。另外指令中的 long-and-random-alpha-numeric-string 請替換成一組隨機字串,可以使用 pwgen -Bsv1 64 來產生,看起來大概像這樣,7rfL2VSJ8s3kfNpbsPlcH73rXgFQ9QDFXzrtrBkMPm8GnvfCm5t6KRP2qpnn9fjT。執行指令如下。
root # docker run --name gitlab -d \
    --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
    --publish 10022:22 --publish 10080:80 \
    --env 'GITLAB_HOST=10.161.81.162' \
    --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
    --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string' \
    --env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string' \
    --env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string' \
    --volume /srv/docker/gitlab/gitlab:/home/git/data \
    sameersbn/gitlab:latest

設定 systemd 的啟動程序,參考此網址
https://github.com/sameersbn/docker-gitlab/issues/237

沒有留言: