LoginSignup
13
11

More than 5 years have passed since last update.

GitLab を docker-compose で動かしてみる

Posted at

ネットで調べてみると、sameersbn/gitlab を使用しているものが多いですが、GitLab には公式の Docker イメージがあるみたいなので、それを使用します。
英語ですが、公式のドキュメントもあります。

Docker は触り始めたばかりの初心者ですが、とりあえず動作するところまではいきました。

環境

ホスト OS は CentOS7 です。
会社の自チーム内のLANに環境を構築するため、プロキシ環境下で動作するように設定します。
メール通知やLDAP認証も全てプロキシ経由で行っています。

docker-compose.yml の内容

使用する Docker イメージは1つですが、設定などを簡単に行えるようにするため、docker-compose を使用します。
結果的に作成した docker-compose.yml は以下になりました。

docker-compose.yml
gitlab:
  image: gitlab/gitlab-ce
  volumes:
    - /srv/docker/gitlab/data:/var/opt/gitlab
    - /srv/docker/gitlab/config:/etc/gitlab
    - /srv/docker/gitlab/logs:/var/log/gitlab
  ports:
    - "10080:10080"
    - "10443:443"
    - "10022:22"
  restart: always
  hostname: 'xxx.xxx.xxx.xxx' # ホストPCのローカルアドレス
  dns:
    - xxx.xxx.xxx.xxx # 後述しますが、これだと解決していないです。
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      gitlab_rails['gravatar_enabled'] = false
      gitlab_rails['time_zone'] = 'Asia/Tokyo'
      gitlab_rails['gitlab_ssh_host'] = 'xxx.xxx.xxx.xxx:10022'
      gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
      gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
      gitlab_rails['smtp_enable'] = true
      gitlab_rails['smtp_address'] = "xxx.xxx.xxx.xxx" # プロキシサーバーのIPアドレス
      gitlab_rails['smtp_port'] = 8025 # プロキシサーバーのポート
      gitlab_rails['smtp_domain'] = "xxx.xxx.xxx.xxx" # プロキシサーバーのIPアドレス
      gitlab_rails['smtp_tls'] = false
      gitlab_rails['smtp_enable_starttls_auto'] = false
      gitlab_rails['ldap_enabled'] = true
      gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close thise this block with 'EOS' below
        main: # 'main' is the GitLab 'provider ID' of this LDAP server
          label: 'LDAP'
          host: 'xxx.xxx.xxx.xxx' # プロキシサーバーのIPアドレス
          port: 389 # プロキシサーバーのポート
          uid: 'sAMAccountName'
          method: 'plain' # "tls" or "ssl" or "plain"
          bind_dn: 'hoge@domain.org'
          password: 'password'
          active_directory: true
          allow_username_or_email_login: false
          base: 'dc=domain,dc=org'
      EOS

解決していないこと

Gravatar からのアイコン取得が無効にならない

gitlab_rails['gravatar_enabled'] = false を指定しているにも関わらず、Gravatar からアイコンを取得してしまいます。
仕方ないので、GitLab に root でログインし、Admin Area から無効に設定しました。

名前解決できない

プロジェクト作成時に他のリポジトリからインポートしようとすると、名前解決できずに失敗してしまいます。
DNS の設定がきちんとできていないのかよくわかりませんが、解決できていません。
おそらくこれのせいで Push をフックして Jenkins に通知することもできていません。

何かわかる方がいらっしゃれば教えていただきたいです。

はまったところ

アバターの画像をアップロードしても反映されない

最初、ホスト側のポートを 10080 にし、コンテナ側のポートは 80 にしていたのですが、画像のパスを見てみると、URLがコンテナ側のポートになっていました。
解決方法がわからなかったので、コンテナ側のポートも 10080 にし、ホスト側と同じポートにすることで解決させました。

SSH で接続できない

上記で http のポートを合わせたので、SSH のポートもホスト側とコンテナ側で 10022 に合わせてみたのですが、接続できなかったので、ホスト側のポートは 10022 にし、コンテナ側は 22 にしました。
これで一応接続できるようにはなったのですが、GitLab に表示される Clone の URL が正しく表示されませんでした。
これは一応、以下の設定を追加することで正しく表示されるようになりました。

gitlab_rails['gitlab_ssh_host'] = 'xxx.xxx.xxx.xxx:10022'

参考URL

以下のサイトを参考にさせていただきました。

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11