前回の続きです.今回はgitlabの構築をしたいと思います.
環境
前回と同じ
構築したい環境
gitlab.hoge.com
という感じのサブドメイン,かつhttpsでgitlabにアクセスできるようにする.
前準備
前回で構築した環境が動いていれば問題ないです.
gitlabのコンテナを建てる
Gitlabのdockerコンテナ構築にはsameersbn/docker-gitlabがよく用いられているように思いますが,公式のコンテナがあるのでそっちを使っていきたいと思います.
ディレクトリ構成は以下の様にします.
. ├── config ├── data ├── docker-compose.yml └── logs
設定
version: "2" services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab volumes: - ./data:/var/opt/gitlab - ./config:/etc/gitlab - ./logs:/var/log/gitlab restart: always environment: VIRTUAL_HOST: gitlab.hoge.com VIRTUAL_NETWORK: shared VIRTUAL_PORT: 80 LETSENCRYPT_HOST: gitlab.hoge.com LETSENCRYPT_EMAIL: hoge@mail.hoge.com GITLAB_OMNIBUS_CONFIG: | external_url "https://gitlab.hoge.com" nginx['listen_port'] = 80 nginx['listen_https'] = false nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" } gitlab_rails['time_zone'] = 'Asia/Tokyo' networks: - shared networks: shared: external: name: internal_shared
gitlabのhttps化には色々手段が考えられると思いますし,直接gitlabを外部に晒す方法であれば直接gitlabに対してletsencryptで取得した証明書を食わせるべきですが,今回はそれらを全てフロントエンドのnginxに任せてしまいます*1.
通常external_url "https://gitlab.hoge.com"
を指定すると証明書が要求されますが,以降のnginxに関する設定をすることでリバースプロキシにそれらの処理をゆだねることが出来ます.
起動
$ docker-compose up
gitlabはかなりメモリを食うようです.実験のためにMac上のVagrantで起動しようとしたときはひたすらエラーでなんともなりませんでしたが,サーバ上ではうまく動いてくれました.
初回起動時には様々な設定を行うようでそこそこの時間がかかり,それまではアクセスしてもエラーが帰ってくるだけになります.
httpsでアクセスできるようになったら成功です.初回ログインに成功したらアカウントの登録を止めておきましょう.
うまくいってないこと
メールの設定もしたのですが確認メールが送られてきません.ルータのログも確認しましたが特にそこでフィルタリングしているわけではなく,どうもgitlabの内部のエラーで送れていないようです.何度か設定をいじくり回したのでそこで何かおかしくなったような気もするのですが…
まとめ
ずっとgithubに頼っていましたがどうしてもgitlabのCI/CDをためしてみたかったのでインストールしました.簡単に起動できて最高な時代になったなぁ…