最近のシステム開発プロジェクトのバージョン管理は、すっかりGitになりましたね。今どき、CVSやSVNを使っている現場は少なくなってきているのではないでしょうか。
私は40代、バリバリPGしていた頃はCVSでした。GitはCVSやSVNと概念が違うので、勝手がなかなか分からなかったりします。
新しいモノは弄り倒していく中で習得していくのが一番効率がいいと思っていますが、プロジェクトで使っているGitLabで練習するのは怖すぎますよね。そんな時は、練習用のGitLabサーバを作ってしまいましょう。
GitLabのアカウントだけじゃなく、サーバーそのものが一つ手に入ります。つまり、プッシュやマージだけでなく、そもそもmasterブランチ作ったり消したりとその辺りから遊べます。アカウントを自由に作って権限をつけたりもできますので、開発者だけではなく、GitLab運用担当者も遊べます。
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 -y docker-compose
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
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が変わる方は接続先が変わっている可能性があります。
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. の場合
まだ起動中です。もう少し待ってから再度アクセスしてください。
それ以外の場合
環境構築をどこかで失敗している可能性がありますので、再点検かやり直してください。
コメント