GitLab用コンテナの起動
DockerHubにGitLab用の公式イメージはありませんが、有志によるさまざまなGitLab用のイメージが公開されています。今回はsameersbn/gitlabを使って構築します。
まず、sameersbn/gitlabのイメージは以下のURLで公開されています。
執筆時のバージョンは、ubuntu:14.04をベースイメージとし、GitLabのバージョン8.2.1を使って環境を構築しています。Dockerfileが公開されていますので、どのような環境が構築されているかの詳細を確認することができます。
また、GitLabのデータを保存するにはデータベースサーバも必要になります。そのため、Docker Composeを使って、複数のコンテナを同時に稼働させます。
Docker Compose用の構成管理ファイルであるdocker-compose.ymlは以下で公開されています。
- docker-compose.yml(GitHub)
- docker-compose.yml(Rawファイル)
まず、新しいAWS EC2インスタンスを起動します。EC2インスタンスの起動手順はDockerをつかったイマドキのアプリ開発環境構築入門 第1回を参考にしてください。起動したEC2インスタンスにターミナルログインしてホームディレクトリに「gitlab」という名前の作業用ディレクトリを作成します。
$ mkdir gitlab && cd $_
次に、docker-compose.ymlを、wgetコマンドを使ってダウンロードします。
$ wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml $ ls docker-compose.yml
ダウンロードしたdocker-compose.ymlを開き、PostgreSQL用コンテナ(postgresqlコンテナ)およびGitLab(gitlabコンテナ)の環境変数を自身の環境にあわせて修正します。
| 環境変数名 | 設定例 | 説明 |
|---|---|---|
| DB_USER | gitlab | DBのユーザ名 |
| DB_PASS | password | DBのパスワード |
| DB_NAME | gitlabhq_production | DBの名前 |
同様にGitLab用コンテナの環境変数も修正します。EC2インスタンスの80番ポートにアクセスした際にGitLabにアクセスできるよう、GITLAB_PORTの値を80にします。また、ポートの転送を以下のように修正します。
ports: - "80:80" - "10022:22"
noreply@example.comGitLabの返信用メールアドレス
| 環境変数名 | 設定例 | 説明 |
|---|---|---|
| TZ | Asia/Tokyo | タイムゾーン |
| REDMINE_PORT | 10083 | Redmineのポート |
| SMTP_ENABLED | false | メールを利用するかどうか |
| SMTP_DOMAIN | www.example.com | メールのドメイン |
| SMTP_HOST | smtp.gmail.com | メールサーバのアドレス |
| SMTP_PORT | 587 | SMTPのポート番号 |
| SMTP_USER | mailer@example.com | メールのアカウント |
| SMTP_PASS | password | メールのパスワード |
| SMTP_STARTTLS | true | STARTTLS(平文の通信プロトコルを暗号化)するかどうか |
| SMTP_AUTHENTICATION | :login | SMTP認証のメソッド |
| GITLAB_TIMEZONE | Tokyo | GitLabのタイムゾーン |
| GITLAB_HOST | localhost | GitLabのホスト名 |
| GITLAB_PORT | 80 | GitLabのポート番号 |
| GITLAB_SSH_PORT | 10022 | GitLabのSSHポート番号 |
| GITLAB_EMAIL | admin@example.com | GitLabの管理者メールアドレス |
| GITLAB_EMAIL_REPLY_TO | noreply@example.com | GitLabの返信用メールアドレス |
| GITLAB_BACKUPS | daily | バックアップのタイミング |
| GITLAB_BACKUP_TIME | 01:00 | バックアップの時間 |
修正すると、docker-compose.ymlは次のようになります。
postgresql:
image: sameersbn/postgresql:9.4-3
environment:
*1*
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
*/1*
~中略~
gitlab:
image: sameersbn/gitlab:7.14.3
~中略~
ports:
- "80:80"
- "10022:22"
~中略~
environment:
*2*
- TZ=Asia/Tokyo
- SMTP_ENABLED=false
- SMTP_DOMAIN=www.example.com
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USER=mailer@example.com
- SMTP_PASS=password
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=login
- GITLAB_TIMEZONE=Kolkata
- GITLAB_HOST=localhost
- GITLAB_PORT=80
- GITLAB_SSH_PORT=10022
- GITLAB_EMAIL=admin@example.com
- GITLAB_EMAIL_REPLY_TO=noreply@example.com
- GITLAB_BACKUPS=daily
- GITLAB_BACKUP_TIME=01:00
*/2*
~中略~
他の環境変数を設定するときは、以下のサイトを参照してください。
docker-compose.yml の用意ができたら、docker-compose upコマンドを実行し、コンテナを起動します。起動すると、Gitlabコンテナ、PostgreSQLコンテナ、Redisコンテナの3つのコンテナが起動します。
$ sudo /usr/local/bin/docker-compose up Recreating gitlab_postgresql_1... Recreating gitlab_redis_1... Recreating gitlab_gitlab_1... Attaching to gitlab_postgresql_1, gitlab_redis_1, gitlab_gitlab_1 ~中略~
