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

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

2022/05/06 多数のアクセスを頂戴しておりましたので、少しでも見やすく…と思い、ブログのスタイルを一部更新致しました。
2022/05/20 GitLabのデモ動画を作りました!このブログの末尾にリンクを張ったのでよろしければご視聴ください。 
2022/09/22 本ブログと同内容の動画へのリンクを追記しました。Docker Composeのコマンドを最新化しました。

皆様こんにちは。普段はセキュリティ商材を担当している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についてもど素人です!)

このブログの動画

このブログの内容は以下の動画でも説明しております。
説明だけではいまいちよくわからない…という場合は、是非ご視聴ください。

2022/09/22追記
この動画のDocker Composeは少し古いためコマンドがdocker-composeになっております。最新のDocker Composeのコマンドはdocker composeとなります。


www.youtube.com

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 (この状態のときはもう少し待機)

GitLab起動のSTATUS (この状態になったら次の手順へGO!)

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

こんな感じの画面が表示されればOKです。

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

確認したパスワードをコピー&ペーストして、いざサインイン!

正常にrootユーザーでサインインできるとこんな感じの画面になります。

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

最後に

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

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

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


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

今までのGitLabの検証ブログはこちらです。
GitLab カテゴリーの記事一覧 - ネットワールド らぼ

GitLab操作デモ動画 (基本編) を作ってみました。(音声の録音は自宅でiPhoneのボイスメモ使うという超低クオリティですが…。)
つたない内容ではありますが、ご興味がおありでしたら是非ご視聴いただければと存じます。

www.youtube.com