Gitlab日本語化(docker)インストール

# 急に使いたくなった
以前から```Gitlab```(v7.9)を使用していますが、急に８系[^1]が使用したくなりました。
```Jenkins```も以前から使用してい分ければいいやと思っていたのですが、８から[^2]CIが標準で付いてくると聞いてから```docker```で試してはいけそうとやっと始めました。

# 日本語化
7.9でも日本語化[^3]はしています。

ksoichiroさんの日本語パッチを使用しています。
この記事を書き始めた頃は8.7.0までだったのですがサイトのリンクを張りつつ確認したところ最新に限りなく近い8.11.2があります（笑

いつも利用させてもらっています。今回も早速8.11.2を使わせてもらいました。感謝感謝。

# Gitlab(docker)

7.9はDebianからマニュアルでインストールしていたのですが、今回もチャレンジしましたが断念[^4]しました（笑
ほぼほぼ出来上がっている既存の```docker```イメージがいいかなと・・・

```gitlab/gitlab-ce``` か```sameersbn/gitlab```を使用します。

```gitlab/gitlab-ce``` はofficalっぽいんだけど、書いてないなぁ。

使ってみて、```mysql```でなく```postgres```がデフォルト[^5]で変え方が今ひとつ判らなかったので```sameersbn/gitlab```の方を使用します。

## イメージ作成

```text:Dockerfile
FROM sameersbn/gitlab:8.11.2

MAINTAINER takara

RUN apt-get update　&& apt-get -y install patch

RUN wget -O app_ja.patch https://raw.githubusercontent.com/ksoichiro/gitlab-i18n-patch/master/patches/v8.11.2/app_ja.patch && \
    patch -p1 < app_ja.patch && \
    rm app_ja.patch
```

```patch``` コマンドが入っていないのでインストールしてw
日本語パッチダウンロードとパッチを実行してるだけです。簡単w

### イメージビルド
 
```text:
$ docker build -t gitlab:sameersbn8.11.2 .
```

## redis-server実行

```text:
$ docker run --name gitlab-redis -d sameersbn/redis:latest
```

ほぼセットになっている```redis```のが簡単でしょう。
ホスト側の```redis-server```に接続しようとしましたが、バージョンが合わないのかこちらにしました・・・

## データベース初期化

新規であれば以下のように適当にデータベースを作成します。

```text:
$ mysql -u root -ppassword -e "CREATE DATABASE gitlab8.11.2 DEFAULT CHARACTER SET utf8";
```

既存のデータがあるのであれば、バックアップを取って、実行時に既存のデータベースを指定しましょう。
また、既存のデータがある場合は以下のものを起動後に作成されるフォルダへコピーして再起動するといいでしょう。

### 既存データの置き場所

|コピー先|コピー元[^6]|
|----|----|
|data/.ssh/authorized_keys|/home/git/.ssh/authorized_keys<br/>にありました。登録されたSSHキーですね|
|data/ssh                 |sshdのキーファイルですね。/etc/ssh/にありました。|
|data/repositories        |リポジトリです。/home/git/repositories/にありました。|
|data/uploads             |アップロードされたファイルです。/home/git/uploads/以下のファイルをコピーしました。|


## イメージ実行

```text:
$ docker run -itd \
	--name gitlab8 \
	-h gitlab8 \
	-p 80:80 \
	-p 22:22 \
	--link gitlab-redis:redisio \
	--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string'
	--env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \ 
	--env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
	--env 'GITLAB_HOST=gitlab' \
	--env 'DB_ADAPTER=mysql2' \
	--env 'DB_HOST=172.17.0.1' \
	--env 'DB_NAME=gitlab8.11.2' \
	--env 'DB_USER=user' \
	--env 'DB_PASS=password' \
	-v `pwd`/data:/home/git/data \ 
	gitlab:sameersbn8.11.2
```

<font color='red'>```-p``` オプションはホストOSのポートを差し替えていますが、自分の場合は専用サーバーにしてるのでこんな感じにしています。ホストOS側のssh(22)は他のポートへ逃がしてる</font>ので```gitlab```に当てています。
```DB_HOST``` もホストOS側の```mysql```を使用しているのでこのような値になっています。古い```docker```だと```172.17.42.1```になったりします。

### 起動後

起動直後

![img00.png](https://qiita-image-store.s3.amazonaws.com/0/12727/7d57c934-be6f-5763-4eca-a73b1d0ef162.png "img00.png")

初めて起動した時はテーブル作成などが走るので数分このような画面になります。

### 正常起動

正常に起動すると以下のような管理者のパスワードを設定する画面が表示されます。

![img01.png](https://qiita-image-store.s3.amazonaws.com/0/12727/3263bde2-4ee4-229b-afa7-b26914bbe475.png "img01.png")

昔は決まったパスワードだったのですが、いつからかこうなったようです。

### 管理者でサインイン

管理者のパスワードを正しく設定すると次のような画面が表示されます。

![img02.png](https://qiita-image-store.s3.amazonaws.com/0/12727/83ba0f8c-9108-b913-6f8b-def441ec0be4.png "img02.png")


登録済みとして、アカウント「root」、パスワードは先ほど設定したものでサインインします。

### サインイン後
最初は何も作成されていないので以下のように「Welcome」画面が表示されます。

![img03.png](https://qiita-image-store.s3.amazonaws.com/0/12727/e3cffcdc-d5a0-d11c-40e4-313878643bbf.png "img03.png")

### 設定

右上のスパナマークで管理設定をします。
自分の場合はこれぐらい最初で設定ます。

- 自分のアカウントを登録（管理者）
- 自分のアカウントでサインインし直して「root」アカウントをロックもしくは削除
- サインアップの無効
- インポートするソースのサイトを選択

### 完了

設定後、サインアウトすると以下のような画面になります。
「初めての方は登録」、サインアップがなくなっていますね。

![img04.png](https://qiita-image-store.s3.amazonaws.com/0/12727/2dbca89b-261d-fafe-744f-83ceaa50ad6c.png "img04.png")

これでやっとCIが動く環境が整いました。

# 参考サイト
- [Gitlab Comunity Edition](https://gitlab.com/gitlab-org/gitlab-ce)
- [GitHubクローン「GitLab」を日本語化して使う方法](http://qiita.com/ksoichiro/items/f63196aa0a7f07c1862d)
- [GitLab Community Editionを勝手に日本語化していくプロジェクト。](https://github.com/ksoichiro/gitlab-i18n-patch)

[^1]: v8.11にもなって今更ですが、v7.9のソース管理に不満がなかったのとなまじ```Jenkins```が使えたため、そっちでもできるとか、後7.9の祭に```Gitlab```のインストールが難儀した為、腰が重くなっていました。
[^2]: 7でも別でCIサーバーを立てればいいらしいのですが・・
[^3]: というか、日本語じゃないと直感的にピンとこないのでw
[^4]: ```Ruby on Rails```を知らない私には毎回ハードルが上がって無理ですw
[^5]: 既存の7.9が```mysql```を使用していたので・・でも新規なら内部でデータベースも作成してくれるので便利かも
[^6]: OSやバージョンにもよると思いますので参考程度に読み替えてください。