この記事は、シリーズ記事「「C#のライブラリプロジェクトをGitLabにpushしたら自動でDLLが書き出されてついでにDocFXで作成されたドキュメントがCloud Run上にデプロイされる」っていうやつをやる」の一部です。
はじめに
とりあえず docker
を入れておけば、何かサーバーを立ち上げたいと思った時にさくっと立ち上げる事が出来て便利ですよね。
今回はそんな docker
と docker-compose
を使用して、GitLab CE が動作するサーバーを立ち上げてみます。
Ubuntu 18.04 LTS 上に docker
と docker-compose
がインストールされている前提で進めていきます。
サーバーのセットアップについては、以前書いた記事がありますので良ければ見てみて下さい。
Ubuntu 18.04 LTS にDocker環境をインストールする
TL;DR;
環境が整っていれば、
1. 以下の内容のファイルを用意して
version: '3'
services:
git:
image: 'gitlab/gitlab-ce:12.4.2-ce.0'
restart: always
hostname: 'gitlab-ce'
ports:
- "80:80"
- "22:22"
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost'
gitlab_rails['lfs_enabled'] = true
gitlab_rails['lfs_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/lfs-objects"
gitlab_rails['time_zone'] = 'Asia/Tokyo'
volumes:
- ${PWD}/config:/etc/gitlab
- ${PWD}/logs:/var/log/gitlab
- ${PWD}/data:/var/opt/gitlab
2. 同じディレクトリで以下のコマンドを実行するだけです
フロントエンドで立ち上がって、ログなどが見れる
docker-compose up
or
バックグラウンドで立ち上がる
docker-compose up -d
ymlの設定について
使用するイメージ
image: 'gitlab/gitlab-ce:12.5.3-ce.0'
DockerHubにアップされているイメージを使用します。
GitLabCE イメージのタグ一覧は以下から見る事が出来ます。
ポート設定
ports:
- "80:80"
- "22:22"
マウントするポートです。
GitLab CE が使用しているポートを素直にそのままホストのポートにマウントしていますが、
ports:
- "8080:80"
- "2222:22"
のような設定ももちろん可能です。
GitLabの設定
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost'
gitlab_rails['lfs_enabled'] = true
gitlab_rails['lfs_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/lfs-objects"
gitlab_rails['time_zone'] = 'Asia/Tokyo'
GitLab CE の設定です。
他に、それぞれの設定が環境変数を持っているようで、それを直接指定する方法もあるようなのですが、対応する環境変数を探すのが面倒だったのでこの方法にしました。
あまりちゃんと試していませんが、ざっくりとこの辺りに書いてある事なら設定できるような気がしています。
ちなみに、external_url
は立ち上がっているサーバーのipか、外向けのサーバーならドメインを指定する必要があります。
マウントするボリューム
volumes:
- ${PWD}/config:/etc/gitlab
- ${PWD}/logs:/var/log/gitlab
- ${PWD}/data:/var/opt/gitlab
設定と、ログと、データそのものをバックアップしたかったので、僕は上の3つをホストにマウントする事にしました。
これによって、単にUbuntu上でデータをコピーするだけでバックアップできるようになります。
ちなみに、 docker-compose.yml と docker
環境さえあれば windows でも起動できますが、現時点では仕様上 windows に docker のファイルをマウントできないので、ご注意ください。
終わりに
ソースコードは大分センシティブものなので、クラウドに預けるのはまだ抵抗がある、という人は多いと思います。機密なデータを扱っていればなおさらですね。
オンプレミスで GitLab のサーバーを立ち上げていれば、イントラのみでの運用にできる等運用の柔軟性が生まれ、なおかつ git
を使用したバージョン管理システムの恩恵が受けれるので、お勧めです。