1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker(Docker-Compose)でGitlabを構築

Last updated at Posted at 2024-09-05

背景

サクッと構築しちゃおうと着手したら、意図せずはまってしまったので、忘備のために、手順を記録する。

構築環境

ローカル環境に構築するだけだったので、ネットワーク内にDNSサーバは存在せず、ローカルIPでサーバに接続している。
また、1つのサーバで複数のアプリケーションを動作させていたのでGitlabへのアクセスは80ポートではなく、ほかのポートを指定する必要がある。

ハマった事象

以下のように、サーバのローカルIP('192.168.1.2')を指定した。
また、ポートは8080を利用することにした。
external_urlを指定しないと、gitlab上で、clone用のURLが、ホスト名称になってしまうため、「external_url 'http://192.168.1.2:8080'」として、指定した。

docker-compose.yaml
version: '3.6'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:17.2.4-ce.0'
    container_name: gitlab
    hostname: '192.168.1.2'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.1.2:8080'
    ports:
      - '8080:80'
      - '4433:443'
      - '2222:22'
    volumes:
      - '/home/com/gitlab/config:/etc/gitlab'
      - '/home/com/gitlab/logs:/var/log/gitlab'
      - '/home/com/gitlab/data:/var/opt/gitlab'
    shm_size: '256m'

上記のdocker-composeを用いて、コンテナを起動し、ブラウザからアクセスしたが、gitlabに接続できなかった。
image.png

原因と解決方法

下記の記事を見て解決することができた。。。

原因

下記のようにexternal_urlをポート付きで指定すると、gitlabのNGINXのポートも自動的に同じポート(本ケースでは8080)に切り替わるようになっているらしい。

docker-compose.yaml
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.1.2:8080'

解決方法

下記のようにNGINXのポートを指定してあげることで解決できた。

docker-compose.yaml(NGINX待ち受けポートの指定)
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.1.2:8080'
        nginx['listen_port'] = 80

まとめ

上記を踏まえて、正常にアクセスすることができた際のdocker-compose.yamlを記載する。

docker-compose.yaml
version: '3.6'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:17.2.4-ce.0'
    container_name: gitlab
    hostname: '192.168.2.10'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.2.10:8080'
        nginx['listen_port'] = 80
    ports:
      - '8080:80'
      - '4433:443'
      - '2222:22'
    volumes:
      - '/home/com/gitlab/config:/etc/gitlab'
      - '/home/com/gitlab/logs:/var/log/gitlab'
      - '/home/com/gitlab/data:/var/opt/gitlab'
    shm_size: '256m'

P.S

gitlabの公式ページをよく見たら、確かにコンテナ側の指定ポートが、external_urlで指定したURLのポート番号(8929)と一致していた。。。

docker-compose.yaml
version: '3.6'
services:
  gitlab:
    image: gitlab/gitlab-ee:<version>-ee.0
    container_name: gitlab
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2424
    ports:
      - '8929:8929'
      - '443:443'
      - '2424:22'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?