わしのlog

プログラミングとかバイクとか。

WSL(WindowsSubsystemForLinux)を使用してgitlabサーバを立てる

はじめに

WSL上でdockerを使用してgitlabサーバを構築するお話です。
最近WSL上で普通にdockerが動くようになっているみたい(下記記事参照) qiita.com (注:docker.ioをインストールしていますが、古いバージョンのようです。最新はdocker-ce?)
なので、WSLのみで動かそうと思っていたのですが
どうも立てたコンテナの中のgitlab.rbがいじれないようで
結局docker for Windowsとの共存で進めていくことにしました。
(この件について何か情報ありましたらお教えください・・・)

環境

手順(docker)

docker for Windowsの導入

こちらからインストール

WSLの導入

こちらの記事を参考にWSLをWindowsに導入します。

WSLへのdockerのインストール

まずはリポジトリの更新→パッケージの更新を行いましょう。
$ sudo apt-get update
$ sudo apt-get upgrade

あとは公式の手順に従ってインストールです。

docs.docker.com

  • 必要なパッケージをインストール
$ sudo apt-get install \
     apt-transport-https \
     ca-certificates \
     curl \
     software-properties-common
  • dockerのGPGキーを追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • フィンガープリントの確認
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  • パッケージの更新
sudo apt-get update
  • dockerのインストール
$ sudo apt-get install docker-ce
  • dockerがインストールできたか確認
$ docker --version

docker for Windowsとdockerデーモンの共有設定を行う

  1. docker for Windowsを起動します。
  2. 起動したら、右下のクジラのアイコンを右クリック
  3. [Settings]→[General]に進み、Expose daemon...の項にチェックを入れる。
  4. その後、wsl側のコンソールで~/.bashrcを編集する。
    最終行あたりにexport DOCKERHOST='tcp://0.0.0.0:2375'を追記して保存。

これでdockerコマンドがwsl上でも打てるようになっているはずです。

gitlabサーバの起動

下記コマンドを実行
(publishの部分は任意の形式に変えてokです)

$ docker run --detach \
    --hostname localhost \
    --publish 443:443 \
    --publish 80:80 \
    --publish 22:22 \
    --name gitlab \
    --restart always \
    gitlab/gitlab-ce:latest

起動までに時間を要するので、ログを監視

$ sudo docker logs -f [Container ID or NAME]

rubyを触ったことがある方なら解ると思いますが、databaseの
migration等が行われているのが確認できると思います。

ちなみに、docker runコマンドをsudoで実行すると
docker daemonが起動していない旨のエラーメッセージが出ます。
予想ですが、sudoコマンドの場合共有をかけているwindows側のdocker daemonではなく、
WSL上のdocker daemonを使用しようとしている為だと思います。

後はlogで起動確認後(gitlab Reconfigured!とメッセージが出るはず)、
http://localhostに接続しましょう。

f:id:devdaikichi:20181217104525p:plain
gitlab_top
この画面が出ればOKです。
rootの初期パスワードを設定してあげて、gitlabを使用してみましょう。

その他

その他gitlabの設定を直接いじりたい時のコマンドを列挙しておきます。

gitlab.rb(設定ファイル)をいじりたい時

docker exec -it [Container ID or NAME] nano /etc/gitlab/gitlab.rb
(nanoでもvimでもokです)

設定の反映

docker exec [container ID or NAME] gitlab gitlab-ctl reconfigure /bin/bash

コンテナ内でbashを使う場合

docker exec -it [containerID or NAME] /bin/bash

volumeについて

私の方で色々試してみたのですが、うまくマウントできない・・・。
うーん、誰かHelp me
(一応検証記事は別で書きます。)

現場からは以上です。