GitLabをDockerで構築する方法
GitLabをDockerで構築する方法を説明します。
前提条件
次のソフトウェアがインストールされていることを前提とします。
- Docker
GitLabのインストール
次の1コマンドで構築できます。コマンドは適宜修正してください。
- GitLabのバージョンは最新のものにする
- 環境変数GITLAB_HOMEにホスト側のGitLabのデータを格納するパスを指定する
- ホスト側のポート番号は状況に合わせて変更する
# データを保存するパスを設定
export GITLAB_HOME=$HOME/gitlab
# GitLabを起動
sudo docker run \
--detach \
--name gitlab \
--hostname gitlab.example.com \
--publish 8443:443 --publish 8080:80 --publish 2022:22 \
--env GITLAB_OMNIBUS_CONFIG="
gitlab_rails['time_zone'] = 'Asia/Tokyo';
" \
--volume "$GITLAB_HOME/config:/etc/gitlab" \
--volume "$GITLAB_HOME/logs:/var/log/gitlab" \
--volume "$GITLAB_HOME/data:/var/opt/gitlab" \
--log-opt "max-size=1g" \
--restart always \
gitlab/gitlab-ce:13.6.3-ce.0
起動するまで数分から数十分程度待ちます。
http://localhost:8080/
にアクセスしてGitLabが起動したことを確認してください。
rootユーザのパスワード設定画面が表示されます。
起動しない場合は、次のコマンドでログを確認してください。
docker logs -f gitlab
GitLabのバージョンアップ
次の手順でコンテナを削除し、新しいバージョンのコンテナを起動します。
コンテナを削除します(念のため削除前にバックアップを実行します)。
sudo docker exec -t gitlab gitlab-backup create
sudo docker stop gitlab
sudo docker rm gitlab
構築時のコマンドのバージョン部分を更新し、新規コンテナを起動します。
正常に起動できたことを確認し、バージョンアップ完了です。
GitLabのバックアップ
次のコマンドでバックアップします。
保存先は$GITLAB_HOME/data/backups
ディレクトリです。
# GitLab 12.2以降の場合
docker exec -t gitlab gitlab-backup create
# GitLab 12.1以前の場合
docker exec -t gitlab gitlab-rake gitlab:backup:create
cronの設定サンプルは次の通りです。
0 0 * * * ec2-user docker exec -t gitlab gitlab-rake gitlab:backup:create CRON=1
GitLabのリストア
次の手順でリストアします。バックアップファイルを用いてリストアします。
DBに接続するプロセスを停止します。
docker exec -it gitlab gitlab-ctl stop unicorn
docker exec -it gitlab gitlab-ctl stop puma
docker exec -it gitlab gitlab-ctl stop sidekiq
プロセスが停止されたことを確認します。
docker exec -it gitlab gitlab-ctl status
バックアップをリストアします。
環境変数BACKUPにリストア対象のバックアップファイルを指定します。
BACKUPはファイル末尾の_gitlab_backup.tar
を除いた名前を指定します。
- パス例:$GITLAB_HOME/data/backups/1234567890_2021_01_01_13.6.3_gitlab_backup.tar
- BACKUP:1234567890_2021_01_01_13.6.3
docker exec -it gitlab gitlab-backup restore BACKUP=1234567890_2021_01_01_13.6.3
コンテナを再起動します。
docker restart gitlab
GitLabが正常に動作していることを確認します。
docker exec -it gitlab gitlab-rake gitlab:check SANITIZE=true
AWSによるHTTPS・SSL/TLS・独自ドメインの対応
AWSのALB・ACM・Route53を用いて、独自ドメインと証明書の取得し、HTTPS通信を終端する場合、 環境変数GITLAB_OMNIBUS_CONFIGに次のように設定します。
gitlab_rails['time_zone'] = 'Asia/Tokyo';
# プロトコルやドメインを指定
external_url 'https://gitlab.example.com';
# HTTPSをALBで終端し、GitLabへはHTTPで通信する
nginx['listen_port'] = 80;
nginx['listen_https'] = false;
# バックアップをS3に保存する
gitlab_rails['backup_keep_time'] = 604800;
gitlab_rails['backup_upload_connection'] = {
'provider' => 'AWS',
'region' => 'ap-northeast-1',
'aws_access_key_id' => 'change me',
'aws_secret_access_key' => 'change me'
};
gitlab_rails['backup_upload_remote_directory'] = 'your bucket name';