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


補上 docker-compose.yml:
version: '2'

services:
  redis:
    restart: always
    image: sameersbn/redis:latest
    command:
    - --loglevel warning
    volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:9.6-2
    volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm

  gitlab:
    restart: always
    image: sameersbn/gitlab:9.2.5
    depends_on:
      - redis
      - postgresql
    ports:
      - "10080:80"
      - "10022:22"
    volumes:
      - /srv/docker/gitlab/gitlab:/home/git/data:Z
    environment:
      - DEBUG=false

      - DB_ADAPTER=postgresql
      - DB_HOST=postgresql
      - DB_PORT=5432
      - DB_USER=gitlab
      - DB_PASS=password
      - DB_NAME=gitlabhq_production

      - REDIS_HOST=redis
      - REDIS_PORT=6379

      - GITLAB_PORT=10080
      - GITLAB_SSH_PORT=10022
      - GITLAB_RELATIVE_URL_ROOT=/git
      - GITLAB_SECRETS_DB_KEY_BASE=Lzzcp5Vrmh3Lg4B9Mwj8v4Gj3zs7dHN6vMr8HMLxJVqrS2kXhdjQdpMnWNZxP6pz
      - GITLAB_SECRETS_SECRET_KEY_BASE=hTNCdbHw5hz9nmKJvmtB7HhNSfdjzXxMPnfKnDwvbRxdTw4GzcWWzlnTxhDHpVx2
      - GITLAB_SECRETS_OTP_KEY_BASE=7rfL2VSJ8s3kfNpbsPlcH73rXgFQ9QDFXzrtrBkMPm8GnvfCm5t6KRP2qpnn9fjT


嗯,使用 docker-composer,不需設定  systemd

沒有留言: