ぽよメモ

レガシーシステム考古学専攻

nginxとdocker-genとその他を使って良い感じにする(2)~gitlab構築~

poyo.hatenablog.jp

前回の続きです.今回は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をためしてみたかったのでインストールしました.簡単に起動できて最高な時代になったなぁ…

*1:なぜかというと最初は前回作製したcertsディレクトリをマウントしてやってみたのですがどうもうまく行かなかったためです.