株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

GitとCI/CDに関する知識ゼロのSEがGitLabの検証環境をDocker Imageで構築するだけの記事

皆様こんにちは。普段はセキュリティ商材を担当しているSEの小池と申します。

ネットの海には、検証してみた、使ってみた、資格とってみた、といった素晴らしい技術系ブログがたくさんあります。今の今まで私はそれを読んで「ほぇー皆様すごいなぁ。勉強になります!」などとリスペクトしている側でした。

そんなある日、GitやCI/CDに無縁の私に会社から「GitLabの技術ブログ書いておいて」というミッションが下りましたなぜに私??
このミッションを達成すべく、GitもCI/CDもロクにわかっていないセキュリティ商材担当SEがGItLabをとりあえず触るブログを書いてまいります。
今回はその初回として、とりあえず構成とかはさておき、ひとまずDockerを用いてGitLabの検証環境を作成するところから紹介致します!

このブログの内容は以下の通りです。

本記事の対象の方

  • GitLabのオンプレミス版の機能を無償で検証をしたい方、且つ、構成はとりあえず気にしない方。
  • GitLabがどんなものかよくわからないので、とりあえず触ってみたい方。
  • GitやCI/CDについて、GitLabを用いて知識習得したいとお考えの方。

今回のブログのゴール

このブログのゴールは以下を目標としております。

このブログのゴール
  • GitLabのDockderイメージを用いて、GitLabの即席検証環境を作成する。
  • 作成したGitLab環境にrootユーザーでサインインする。

このブログをお読みいただくにあたって

  • 本記事はGitLabがどういった製品なのかの説明はしておりません。製品説明につきましては弊社の製品ページ (こちら) をご参照ください。
  • 本記事はGitやCI/CDに関する知識ゼロのSEによるなんちゃって記事です。GitLabのディープな使用法についてはGitLabの公式オンラインドキュメント (こちら) をご参照ください。
  • 本記事で紹介する手順ではDocker EngineおよびDocker Composeを用いますが、これらの説明は割愛致します。(大丈夫です!書いている私はDocker EngineとDocker Composeについてもど素人です!)

GitLabのDockerImageを使った検証環境作成

Dockerホストの用意

DockerホストとなるLinuxを用意します
後ほどDockder EngineとDocker Composeをインストールするので、その要件を満たすOSをご準備ください。
Install Docker Engine | Docker Documentation
Install Docker Compose | Docker Documentation

この記事ではAWS EC2にてUbuntu 18.04.6 LTS (Bionic Beaver)、インスタンスタイプ t3.large、ストレージタイプ gp2、ストレージサイズ 60GiB で実施しております。

Docker Engineインストール

用意したDockerホストにDocker Engineをインストールします
インストール手順はDocker Docsに記載の通りです。
Install Docker Engine | Docker Documentation

Docker Composeインストール

続けてDockerホストにDocker Composeをインストールします
こちらもDocker Docsの手順に従ってください。Docsに記載されている基本の手順以外のことは実施不要です。
Install Docker Compose | Docker Documentation

docker-compose.ymlファイル作成

本来であればここからdockerコマンドの実行権限を…とかいろいろあるのでしょうが、このブログではそんなものはお構いなしに進みます。
ここではGitLab検証環境用のdocker-compose.ymlを作成します
なお、この章の手順はおおよそGitLab Docsの "GitLab Docker images" の内容をそのまま実施しています。
手順実施中にもし問題が発生した場合は、GitLab Docsを併せてご参照いただければと存じます。
GitLab Docker images | GitLab

いきなりですが、先ほどDocker EngineとDocker ComposeをインストールしたLinuxの任意のディレクトリに、GitLab検証環境用のdocker-compose.ymlを作成します
今回の検証環境用に作成したものを例として載せます。このymlファイルの場合、GitLabのコンテナは192.168.100.10で稼働しますが、この辺りは任意に設定変更していただいて構いません。Restartオプションなどもご自由に変更いただいて問題ありません。
「色々考えたくない、とりあえずGitLabが起動して機能検証できればOKなんじゃ。」という方はそのままお使いください。

version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:22'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'
    networks:
      app_net:
        ipv4_address: 192.168.100.10

networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.100.0/24

次に、上で紹介したdocker-compose.ymlファイルのvolumesのパスを作成します。GitLab Docsのサンプルでは一応/srv/gitlabをGitLabのホームディレクトリとしているため、ここではそれを用います。

# mkdir /srv/gitlab

次に、上で紹介したdocker-compose.ymlファイルのvolumesの環境変数を設定します。もし、ymlファイルの環境変数名を変更した場合は、コマンドの内容を変更した環境変数名に読み替えてください。
(ymlファイルのvolumesで環境変数ではなく直接パスを指定した場合は、この手順はスキップしてGitLab検証環境の起動からを実施してください。)

# export GITLAB_HOME=/srv/gitlab

環境変数を永続的に反映するため、/etc/profile の末尾に以下の2行を追記します

GITLAB_HOME=/srv/gitlab
export GITLAB_HOME

GitLab検証環境の起動

きっと、多分、もっと便利に使用する設定があるのだと思います…しかしこのブログではそんなことはお構いなしです。
先ほど作成したdocker-compose.ymlを使ってGitLab検証環境を起動します
カレントディレクトリを先ほど作ったdocker-compose.ymlがあるディレクトリにして、以下のコマンドを実行します。

# docker-compose up -d

しばらくするとプロンプトが返ってくるので、続けて以下のコマンドを実行します。

# docker ps -a

上のコマンドの結果で表示されている行のうち、NAMES列が "gitlab_web_1" となっているものを探してください。
この行のSTATUS列に "Up xx seconds (<health: starting もしくは healthy>)" という表示があるので、このかっこの中が "healthy" になるまで待ちます。
大体3,4分くらいかかります。
わかりにくい場合は以下の画面例をご参照ください。

GitLab起動のSTATUS (この状態のときはもう少し待機)
f:id:networld-blog-post:20220112195643p:plain

GitLab起動のSTATUS (この状態になったら次の手順へGO!)
f:id:networld-blog-post:20220112195658p:plain

GitLabのコンテナのSTATUSがhealthyになったら、webページを表示してみましょう。
前述したdocker-compose.ymlを使っている場合は、以下のURLでwebページにアクセスできるはずです。
https://<DockerホストのIP>:8929

こんな感じの画面が表示されればOKです。
f:id:networld-blog-post:20220112195740p:plain

rootユーザーでサインイン

先ほど表示したWebページですが、デフォルトでrootというユーザーが設定されていますので、それでサインインします
rootユーザーのパスワードは環境によって異なりますので、以下のコマンドで確認してください。

# docker exec -it <GitLabのコンテナ名> grep 'Password:' /etc/gitlab/initial_root_password

先述致しましたdocker-compose.ymlファイルを使っている場合は以下のコマンドになります。

# docker exec -it gitlab_web_1 grep 'Password:' /etc/gitlab/initial_root_password

f:id:networld-blog-post:20220112200651p:plain

確認したパスワードをコピー&ペーストして、いざサインイン!
f:id:networld-blog-post:20220112200728p:plain

正常にrootユーザーでサインインできるとこんな感じの画面になります。
f:id:networld-blog-post:20220112200816p:plain

これで、最初に記載した今回のブログのゴールは達成です。お疲れ様でした!

最後に

この度はGitもCI/CDもよくわかっておらず、且つ、Docker EngineもDocker Composeもど素人なSEによるGitLab検証環境作成ブログをお読みいただき、誠にありがとうございます。
このブログの目標は以下のとおりでしたが、皆さまはいかがでしたでしょうか。

このブログのゴール
  • GitLabのDockderイメージを用いて、GitLabの即席検証環境を作成する。
  • 作成したGitLab環境にrootユーザーでサインインできることを確認する。

今回は本当にGitLabをDockder Imagesを使って起動するだけの内容でしたが、今後は簡単な使い方等をちまちまご紹介したいと考えております。
この記事が「なんかよくわからんけどGitLabをとりあえず触りたい!」という方のお力になれば幸甚にございます。


GitLabに関するお問い合わせは、以下のフォームからお願い致します。
GitLab製品 お問い合わせ