GitHubのオンプレミス版ライクなGitLabをDocker環境に日本語化をして導入します。GitLabにはOSS版のGitLab CEと有償版のGitLab EEがありますがここではGitLab CEを使用します。
目次
1.目標とするGitLabのURL
GitLab-CEは標準でHTTPポート80とHTTPSポート443を使用しますがDockerホストマシンの80/443ポートは既に使用済みです。
ホストとGitLabコンテナのポートマッピング設定で外部に公開するポートを未使用のポート8080等にも変換できますがアクセスする際にポート番号を指定するのはスマートではありません。
そこで今回も以前導入した「jwilder/nginx-proxy」のネットワークに参加しリバースプロキシされるようにします。
8080ポートにマッピング時のURL「http://hoge3.com:8080」
目標とするGitLabのURL:「http://gitlab.hoge3.com」
2.Dockerコンテナ連携方針
GitLabのDockerイメージもRedmineと同様にオフィシャル版を使用します。使用するDBは当初別コンテナのmysqlを予定していましたがGitLab CEでは一筋縄ではいかなかったのでデフォルトで導入される内部のpostgresqlにしました。GitLabに登録したデータが再起動後も引き継がれるようにデータボリュームコンテナを用意して使用します。
(1)データボリューム
busyboxイメージのデータボリュームコンテナを用意しGitlabコンテナから以下の3つのディレクトリを使用できるようにします。
data/git/config
data/git/log
data/git/opt
(2)フォルダ構成
1 2 3 4 5 6 7 8 9 10 11 |
/home/docker/test/gitlab gitlab │ docker-compose.yml ├─data │ │ │ └─git │ ├─config │ ├─log │ └─opt └─gitlab Dockerfile |
3.Docker-Composeの設計
(1)コンテナサービス一覧
コンテナサービス名 | 役割 | 関連サービス |
gitlabdata | Gitlab用のデータボリュームコンテナ | Gitlab(マウント) |
gitlab | gitlabタスク |
(2)docker-compose.yml
以下が作成したdocker-compose.ymlです。gitlabコンテナは日本語化パッチを適用する為Build指定をしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
version: '2' services: gitlabdata: image: busybox volumes: - ./data/git/config:/etc/gitlab - ./data/git/log:/var/log/gitlab - ./data/git/opt:/var/opt/gitlab gitlab: build: gitlab restart: always ports: - "10022:22" volumes: - /etc/localtime:/etc/localtime:ro volumes_from: - gitlabdata environment: VIRTUAL_HOST: gitlab.hoge3.com GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.hoge3.com' gitlab_rails['time_zone'] = 'Asia/Tokyo' gitlab_rails['gitlab_shell_ssh_port'] = 10022 networks: default: external: name: common_link |
【GitLab設定】
10行目から24行目までがgitlabコンテナの設定です。
14行目がgitlabのポート22をホストの10022にマッピングする設定です。
20行目の「VIRTUAL_HOST」キーにはgitlabのURLを指定します。ここでは前述の通り「gitlab.hoge3.com」を指定しています。VIRTUAL_HOSTキーは「jwilder/nginx-proxy」がリバースプロキシする際に参照します。
21行目の「GITLAB_OMNIBUS_CONFIG」以下の設定は記述するとgitlabコンテナの/etc/gitlab.rb内の同一設定を上書きするようです。
今回は新規追加したgitlabコンテナとの設定についてのみ説明しました。これ以外の設定については以下の記事を参照してください。
Docker-Composeでnginx,php,mysqlの3コンテナを連携する
(3)Dockerfile
Dockerfileに日本語化パッチ適用スクリプトを追記します。使用するのはこちらのパッチです。以下が作成したDockerfileです。
1 2 3 4 5 |
FROM gitlab/gitlab-ce:9.1.4-ce.0 RUN apt-get update && apt-get -y install patch curl RUN curl https://raw.githubusercontent.com/ksoichiro/gitlab-i18n-patch/master/patches/v9.1.4/app_ja.patch -o /tmp/app_ja.patch RUN cd /opt/gitlab/embedded/service/gitlab-rails && patch -p1 < /tmp/app_ja.patch MAINTAINER gtrt7@ |
1行目:日本語化パッチの最新バージョンに合わせて導入するgitlab-ceのバージョンを指定しています。2018/3/31時点の日本語化パッチ最新は9.1.4です。
2行目:patchとcurlをインストールしています。
3行目:日本語化パッチをダウンロードしています。
4行目:日本語化パッチを適用しています。
4.GitLabの動作確認
(1)Docker-Composeの起動と確認
Docker-Compose.ymlファイルのあるディレクトリに移動し以下のコマンドでコンテナを起動します。
1 2 |
# cd /home/docker/test/gitlab/ # docker-compose up -d |
docker psなどで起動確認が出来たら次に進めます。
(2)リバースプロキシ設定確認
「jwilder/nginx-proxy」コンテナのnginx設定ファイルdefault.confにredmineコンテナへのリバースプロキシ設定が追加されているかコンテナに接続して確認します。
1 2 |
# docker exec -it nginx-proxy bash root@822b6977a46f:/app#cat /etc/nginx/conf.d/default.conf |
/etc/nginx/conf.d/default.confの内容抜粋
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# gitlab.hoge3.com upstream gitlab.hoge3.com { ## Can be connect with "common_link" network # gitlab_gitlab_1 server 172.21.0.14:80; } server { server_name gitlab.hoge3.com; listen 80 ; access_log /var/log/nginx/access.log vhost; location / { proxy_pass http://gitlab.hoge3.com; } } |
上記の通り「http://gitlab.hoge3.com」へのアクセスがgitlabコンテナへ転送されていることが分かります。
(3)GitLab接続確認
webブラウザからhttp://gitlab.hoge3.comで接続します。
日本語化された初期画面に接続できました。
このあと初期パスワードを設定し、rootでログインをすると以下の画面が表示されます。
ここからGitlab環境を設定していきます。
5.参考にさせて頂いたサイト
DockerでのGitLab構築時に自動で日本語化パッチをあてる
(改訂版) Docker でオフィシャルな GitLab イメージと Redmine イメージのコンテナを連携させる
ありがとうございます。