GitLabを自分のパソコンや自前のサーバで動かしてみる

IT

最近のシステム開発プロジェクトのバージョン管理は、すっかりGitになりましたね。今どき、CVSやSVNを使っている現場は少なくなってきているのではないでしょうか。

私は40代、バリバリPGしていた頃はCVSでした。GitはCVSやSVNと概念が違うので、勝手がなかなか分からなかったりします。

新しいモノは弄り倒していく中で習得していくのが一番効率がいいと思っていますが、プロジェクトで使っているGitLabで練習するのは怖すぎますよね。そんな時は、練習用のGitLabサーバを作ってしまいましょう。

この記事を読むとできること
  • Dockerイメージを使ってローカルにGitLabサーバを立ち上げる
  • 自分専用の自由に触れるGitLabサーバが出来上がる

GitLabのアカウントだけじゃなく、サーバーそのものが一つ手に入ります。つまり、プッシュやマージだけでなく、そもそもmasterブランチ作ったり消したりとその辺りから遊べます。アカウントを自由に作って権限をつけたりもできますので、開発者だけではなく、GitLab運用担当者も遊べます。

使うもの
  • ubuntu-ja-18.04.2 (インターネット利用可能状態)
  • Docker
  • vi エディタの基本的な操作ができること
スポンサーリンク

GitLabサーバの構築レイヤーイメージ

GitLabサーバ本体のWindows版は現時点ではまだ無いようですので、Linux版をダウンロードして構築します。私はWindowsパソコンしか持っていないので、Hyper-V上にUbuntuの仮想マシンを作って、そこにDockerを立てて、コンテナとしてGitLabサーバを立ち上げることにしました。文字だとややこしてので図にしてみました。こんな感じです。

この一番左上のコンテナがGitLabになるイメージです。Ubuntu上に直接アプリとしてインストールしてしまう方法もありますが、母体が散らかるのが嫌な私はHyper-vやDockerなどのハイパーバイザーを使って環境を別にするようにしています。

それに仮想マシンやコンテナ化しておくことで別の母艦への移設も簡単になりますし、バージョンの切り替えなんてのも簡単ですのでオススメです。

GitLabは複数のプロジェクトの資材を管理できますが、セキュリティ上、別のGitLabサーバがもう一つ必要になった、という事態になっても、コンテナをもう一つ同じように用意するだけなので新しいサーバ機器の調達は不要です\(^o^)/

スポンサーリンク

GitLabサーバの構築をする前の準備

Ubuntuのインストール

既にLinuxのUbuntu環境がある方は読み飛ばしてください。今回はUbuntuを使いますので、セットアップしてください。Windowsのパソコンしか持っていない方でも大丈夫です。

Windows10のHyper-Vを使うことで、Windows上にUbuntu環境が構築できます。やり方はこちらをご覧ください。

Dockerインストール

GitLabのDockerイメージが配布されているので、今回はこれを使って構築します。Docker環境も既に完成している方は読み飛ばしてください。
まだDocker構築していない場合は、まずDockerをインストールします。DockerはGitLab以外でも使えますので、開発関係の方なら入れておいて損はないと思います。

スポンサーリンク

GitLabのインストール

docker-composeをインストール

GitLabは手動で一つ一つdockerコマンド叩くのが大変なので、まとめて実行できるdocker-composeを使います。まずはdocker-composeをインストールします。

$ sudo apt install docker-compose -y

docker-compose.yamlの作成

docker-composeを制御するためのYamlファイルを作成します。こんな感じで良いと思います。external_urlにはUbunutuのIPまたはホスト名と動かす際のポート番号を指定します。

今回の私の環境は次の内容で構築しますので、構築される方はIPアドレスとポート番号は環境に合わせて変更して実施してください。
※localhostはダメでした。外から参照できるIPかホスト名を指定します。

  • IPアドレス:192.168.0.5
  • ポート番号:12000

docker-compose.yamlファイルの格納場所はどこでもOKです。私はホームディレクトリにdockerディレクトリを作成してその中に格納しています。

gitlab:
  container_name: gitlab01
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'localhost'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://192.168.0.5:12000'
      gitlab_rails['time_zone'] = 'Asia/Tokyo'
  ports:
  - '12000:12000'
  - '2022:22'
  volumes:
  - '/docker/gitlab/config:/etc/gitlab'
  - '/docker/gitlab/logs:/var/log/gitlab'
  - '/docker/gitlab/data:/var/opt/gitlab'

dockerコンテナはその性質上、コンテナの中になにかファイルを作ってもコンテナを破棄すると作ったファイルも消えてしまいます。これがDockerコンテナの良いところなのですが、GitLabのように永続的なファイルを管理する場合は都合が悪いです。

volumesを定義して、コンテナの外にリンクを張ることでコンテナを破棄してもGitLabに登録された資材は残すように定義しています。

例えば、一行目の/docker/gitlab/config:/etc/gitlabは、Ubuntu側の/docker/gitlabとコンテナ内Ubuntuの/etc/gitlabをリンクさせてコンテナ外にファイルを置くようにしています。

GitLabを起動する

作成したdocker-compose.yamlの置いてあるディレクトリで次のコマンドを実行します。

$ docker-compose up -d gitlab

docker-compose.yamlがきちんと書けていれば、DockerのGitLabイメージのダウンロードとインストールが始まります。もりもり落ちてきますね。

無事に終わるとこんなメッセージが表示されます。

ここまで表示されたら、しばらくお待ち下さい。初回の起動にはなかなか時間がかかります。

ログインページを表示する

ブラウザを起動して、次のようなURLで接続できます。
IPアドレスとポート番号は読み替えてください。

http://192.168.0.5:12000

こんな感じでGitLabのログイン画面が表示されればインストール完了です。

GitLabを停止する

$ docker-compose down

GitLabのコンテナイメージはDocker内にキャッシュされます。もし完全に削除する場合は、イメージIDを指定して削除します。

-- Dockerイメージ一覧表示
$ docker image ls
REPOSITORY       TAG     IMAGE ID      CREATED     SIZE
gitlab/gitlab-ce latest  0f070900f085  6 days ago

-- イメージIDを指定して削除
$ docker image rm 0f070900f085
スポンサーリンク

トラブルシューティング

接続先が合っているか確認

固定IPの環境の方は関係ないのですが、DHCPでローカルIPが変わる方や出先で動かしてIPが変わる方は接続先が変わっている可能性があります。

接続先の確認方法
  1. GitLabを動かしている環境でIPとポート番号を確認。
    IPアドレス確認方法: ip addressコマンド
    ポート番号確認方法:docker psコマンドでGitLabの部分を確認
    0.0.0.0:12000 ←こんな感じですので、コロンの後ろがポート番号
  2. 確認したIPとポート番号でブラウザからアクセス
    http://IPアドレス:ポート番号

GitLabが起動しているか確認

起動しているか確認するには、docker-composeのpsで確認できます。
このようにstatusがupなら起動しています。起動していない、起動できない場合はどこかの手順にミスがあった可能性がありますので、再点検かやり直してください。

$ docker-compose ps
  Name         Command       State                      Ports
--------------------------------------------------------------------------------
gitlab01   /assets/wrapper   Up      0.0.0.0:12000->12000/tcp,
                                     0.0.0.0:2022->22/tcp, 443/tcp, 80/tcp

StatusはUPだけどHTTPレスポンスがおかしい場合

404 Not Foundの場合

もう少し待つか、ブラウザのキャッシュをクリアしてください。

502 Bad Gateway または GitLab is taking too much time to respond. の場合

まだ起動中です。もう少し待ってから再度アクセスしてください。

それ以外の場合

環境構築をどこかで失敗している可能性がありますので、再点検かやり直してください。

コメント

  1. Judi domino より:

    Good post. I certainly appreciate this website. Continue the good work!

タイトルとURLをコピーしました