(自分用)自宅用にubuntu18.04+dockerでgitlabを構築する(備忘録)

### はじめに
こんばんは
色々やりたい事や勉強したいことがありながらも
ニコ生みたり雀魂とかapexやってしまい思うように時間がとれていない今日この頃です。

svnくらいしか使ってこなかった私の職場もそろそろgitを使おうかという流れが
でてきたので勉強がてら自宅にgitlabを構築しようと思います。


###Ubuntu18.04の構築
まずはgitlabを構築する環境を作ります。
今回はesxi上にubuntu18.04を作りたいと思います。

1. 作成タイプの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/955bac0a-32ae-8527-ae25-ab94ae585181.png)
今回は新規仮想マシンを選びます。

2. 名前とゲストOSの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/40d1807b-5011-0570-02b7-1d0f0a40bf68.png)

3. ストレージの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/0b897389-b099-c515-0982-b71eac7cf60e.png)

4. 設定のカスタマイズ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/29bbdbc2-5e2b-2602-5fb0-081ac07fba0b.png)
設定はこんな感じにしました。
特別なことはないですが注意したいのはCD/DVDメディアでISOファイルの設定を忘れないことですかね。
これをやっておかないとubuntuのインストールができません。

5. 完了
次へと完了を押してイメージを作成します。

###Ubuntuのインストール
1. 起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/0a46f272-4356-0d6d-ae68-1531910f8d4b.png)
まずは起動します。

2. Ubuntuをインストールを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/6b1c5ee5-99b3-95d0-293c-fca87a67d1ef.png)

3. キーボードレイアウト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/a56e80ca-721f-7815-65ea-c4aa2485b1e9.png)

4. アップデートと他のソフトウェア
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/ce060c73-1f0a-9606-feec-f29d4db86e4d.png)

5. インストールの種類
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/dec4c7e0-68bb-2f6b-1850-5470d037b021.png)

6. どこに住んでいますか？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/6ae93632-0d09-91c7-250d-269570a8300e.png)
俺は東京生まれHIP HOP育ち 悪そうな奴は大体フレンズ 

7. あなたの情報を入力してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/6e750f1a-dd97-8592-0bd0-e78cc76b2b10.png)

8. インストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/ddb65694-7e03-c3f5-10e0-b46cb53ac5ce.png)
インストールが終わるまでしばし待ちます。

9. 再起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/53400b72-9c8b-e4ed-06cc-ddcfe6299f1a.png)
再起動します。

###docker, docker-compose
再起動が出来たらまずはdocker, docker-compoeをインストールしていきます。

1. docker

基本的には[docker公式](https://docs.docker.com/engine/install/ubuntu/)の通りにdockerをインストールしていきます。

```sh:
sudo apt-get remove docker docker-engine docker.io containerd runc

# Update the apt package index and install packages to allow apt to use a repository over HTTPS:
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Use the following command to set up the stable repository. To add the nightly or test repository, add the word nightly or test (or both) after the word stable in the commands below. Learn about nightly and test channels.
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update

# docker install
sudo apt-get install docker-ce docker-ce-cli containerd.io
```

ルート権限がなくてもdockerを実行できるように設定します。

```sh:
sudo groupadd docker

sudo usermod -aG docker $USER

# ログアウトすれば反映されるらしいですが私の環境だと反映されなかったので
# ここで一度再起動します。
sudo reboot

# 再起動後、dockerが表示されていればOKです
groups
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/b0119a9c-b973-c7f3-0286-b9c55c363015.png)

```sh:
# docker-ceのversionを指定してinstallする場合はこちら
# List the versions available in your repo:
apt-cache madison docker-ce

# 例
sudo apt-get install docker-ce=5:19.03.12~3-0~ubuntu-bionic docker-ce-cli=5:19.03.12~3-0~ubuntu-bionic containerd.io
```

テストしてみます

```sh:
# Verify that Docker Engine is installed correctly by running the hello-world image.
sudo docker run hello-world

# イメージがあるか確認します
docker ps -a
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/b27290cb-4b35-5d0b-9b78-bc05b132899a.png)
大丈夫そうです

2.　docker-compose

```sh:
sudo apt install docker-compose

# インストールの確認
docker-compose -v
# ↓が表示されていればOK(versionは適宜読み替えください)
docker-compose version 1.17.1 build unknown
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/2ef0e5b1-5f98-5209-c3e9-3dc33de6de90.png)


###gitlab
ようやっとgitlabの構築です。
[gitlab公式](https://docs.gitlab.com/omnibus/docker/)をみていきます。

公式のdocker-compose.ymlを真似るのでまずは環境変数を定義します

```sh:
# 先にフォルダを作成します
sudo mkdir -p /srv/gitlab
# 環境変数
export GITLAB_HOME="/srv/gitlab"
```
※これをしておかないと次のdocker-compose.ymlだとコンテナが正しく上がってきません
docker-compose.yml配下のフォルダをvolumeで指定してもいいと思いますがそれだと何故かコンテナがうまく立ち上がってこないので公式と同じにしました。
(権限かなにかがよろしくない？)

```sh:
# 適当にフォルダを作ります
mkdir gitlab && cd gitlab

# docker-compose.ymlを作ります
touch docker-compose.yml

# editorで開いて中身を書きます
gedit docker-compose.tml
```

```yaml:docker-compose.yml
web:
  image: 'gitlab/gitlab-ce:latest'
  hostname: '自PCのIPアドレス'
  restart: always
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://自PCのIPアドレス:80/gitlab/'
      gitlab_rails['time_zone'] = 'Asia/Tokyo'
  ports:
    - '80:80'
    - '443:443'
    - '22:22'
  volumes:
    - '$GITLAB_HOME/config:/etc/gitlab'
    - '$GITLAB_HOME/logs:/var/log/gitlab'
    - '$GITLAB_HOME/data:/var/opt/gitlab'

```
docker-compose.ymlはこんな感じにしました。
設定項目は他にもあるみたいなので必要になったら追記しましょう。
また、運用を考える際はgitlabのversionを固定したほうがいいですかね。
また、portはもし既に利用中のものがある場合は適当な数字に置き換えましょう。

```sh:
# gitlabの起動
docker-compose up -d
```
起動にけっこう時間がかかります。
気長に待ちましょう。

起動ができたらブラウザを開いてexternal_urlで指定したURLを叩いてみましょう。
下の画面が表示されればOKです。
あとは管理者PWを変更し、Registerからユーザーの登録を行いましょう。
例：http://自PCのIPアドレス:80/gitlab/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/fcc70ce0-d71b-279f-4117-e37adae714e4.png)


###終わりに
これでubuntu18.04にdocker,docker-composeを用いてgitlab環境を構築することができました。
会社で構築する時はubuntuやdockerにproxyの設定が必要になるかもしれませんが自宅ならこんな感じでOKです。
こんなに簡単に自宅にgitlabを構築できるとは有り難いですねぇ。
ちなみにオンプレでgitlabをubuntuに直接インストールするとなぜかgitlabの設定更新で止まってしまいうまくいきませんでした。
まあ、docker使った方が簡単にできそうなのでヨシ!とします。

# 参考URL
https://docs.docker.com/engine/install/ubuntu/
https://docs.gitlab.com/omnibus/docker/
https://qiita.com/soumi/items/baaa35b37f6c90a66c0c
http://imamachi-n.hatenablog.com/entry/2018/04/29/193718
https://demura.net/deeplearning/16931.html

上記URLに感謝します。