何をしたの?
DockerのWSLディストロを外付けHDDに移動して、GitLabのDockerコンテナを構築、LAN内のPCからアクセスできるようにしました。
目次
- 1. はじめに
- 2. やりたいこと
- 3. docker-desktop ディストリビューションの引っ越し
- 4. GitLabを構築する
- 5. 他のPCからアクセスできるようにする
- 6. お疲れ様でした
1. はじめに
GitHubのIssueを有効活用する記事を読んでIssueを使いだし、「こういう個人的なのってGitHubに置いとくの恥ずかしいな……あと個人開発のプロジェクトとか、売り物にするの考えるなら人に見られないとこに置いときたいな」となって、GitLabを構築してみることにしました。
やってみたところ結構めんどくさいことが多いうえ、全部の流れを書いてくれてる記事が無かったので書きました。とりあえずこの記事をスタート地点に、もっといい構築方法とか、気になったことを突き詰めてもらえたらと思います。
2. やりたいこと
-
GitLabをWSL2 + Docker Desktop上に構築する
-
外付けHDDとかにGitLabのデータを置いて、プロジェクトをたくさん貯められるようにする
-
作業PCじゃない別のPCに入れて作業することを想定して、別のPCからGitLabにアクセスできるようにする
3. docker-desktop ディストリビューションの引っ越し
まずはGitLabが外付けストレージ内にデータを置けるようにします。といっても、マウントとかじゃなくて、GitLabが入ったDockerごとそのまま引っ越すという力技です。
もうちょっと理解が進んだら、改めてマウントする方法でやってみたいなとは思っています(やれたらやる)。
-
Docker Desktop for Windows のデータを別のドライブに移動する
こことか -
【Docker+Windows】データ保存先の変更 #WSL2
ここを見てやった記憶があります。
3.1. WSLを止める
まずはDockerディストリビューションを停止します。
wsl -l -v
で、現在このPCに入ってるディストリビューションの一覧と状況が分かります。
僕の場合以下のように出ました。
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Running 2
docker-desktop-data
がある人もいるみたいですね(ver4.30.0で無くなったらしい)。
ちょっと僕の環境には無かったのですが、こちらの記事だとその話もしていたので、参照してみてください。
ともかく、これらのディストリビューションを停止します。
wsl --shutdown
Dockerもタスクトレイのアイコンを右クリして「Quit Docker Desktop」でシャットダウンできます。
さっきのwsl -l -v
で起動状況を確認しておくとよいです。
3.2. WSLを持ち運び可能にする
wsl --export
というコマンドで、WSLを圧縮します。
WSLを置くためのフォルダを各自好きな場所に作ったあと、以下のコマンドを実行します。第2引数のパスは調整してください。
wsl --export docker-desktop \path\to\new\distro\docker-desktop.tar
.tar
をつけないと何でもない何かが生成されてやり直しです(1敗)。
3.3. DockerをWSLから削除
wsl --unregister docker-desktop
wsl -l -v
で削除確認もしてください。
3.4. 新しい場所でDockerをインポート
先ほど生成した.tar
ファイルを、各自作ってもらった場所でインポートします。
# wsl --import ディストロ名 インポート先 インポート元 --version 2
wsl --import docker-desktp \path\to\new\distro\ docker-desktop.tar --version 2
以上で引っ越し終わりです。wsl -l -v
で、削除したdocker-desktopが生き返ってたら成功です。.tar
は今後使う予定がなければ消して大丈夫です。
4. GitLabを構築する
4.1. WSLでdocker-compose用のフォルダを作る
docker-desktopじゃないほうのWSL2で、GitLab用のフォルダを作ります。
GitLabのデータを置くわけじゃないので安心してください。
mkdir gitlab && cd gitlab
4.2. docker-compose.ymlを作る
GitLabのDocker環境を構築するためにdocker-compose.yml
を作ります。
以下をコピペしてください。
services:
gitlab:
image: "gitlab/gitlab-ce:latest"
container_name: gitlab
restart: always
hostname: "gitlab.local" # ホスト名(好みで変更可能)
ports:
- "0.0.0.0:80:80" # HTTP
- "0.0.0.0:443:443" # HTTPS
- "0.0.0.0:22:22" # SSH
volumes:
- "gitlab-config:/etc/gitlab"
- "gitlab-logs:/var/log/gitlab"
- "gitlab-data:/var/opt/gitlab"
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.local' # アクセスURL(hostnameと合わせて変更)
gitlab_rails['gitlab_shell_ssh_port'] = 22
# 必要に応じて以下のコメントを外してメール設定などを行ってください
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.gmail.com"
# gitlab_rails['smtp_port'] = 587
# gitlab_rails['smtp_user_name'] = "my.email@gmail.com"
# gitlab_rails['smtp_password'] = "my-password"
# gitlab_rails['smtp_domain'] = "smtp.gmail.com"
# gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = false
# gitlab_rails['gitlab_email_from'] = 'my.email@gmail.com'
shm_size: "256m" # GitLabの動作に必要なメモリサイズ
volumes:
gitlab-config:
gitlab-logs:
gitlab-data:
hostnameとexternal_urlの値を変更する場合は、両方を同じ値に合わせてください。この値は後で他のPCからアクセスする際のホスト名になります。
Claude様が一晩で作ってくれたものなので「何でこうしてるんですか?」とは聞かないでください。僕もdocker-composeよくわからないです。僕の環境ではうまくいったのでそのまま使ってます。
4.3. コンテナ起動!
ここまでやったらコンテナ起動します
docker-compose up -d
GitLabは起動にそこそこ時間がかかります(5〜10分程度かかることもあるらしい)。アクセスできなくても焦らず待ちましょう。
ログ確認とか
docker-compose logs -f
コンテナ状況確認
docker ps -a
で、進捗を確認できます。docker-compose logs -f
で「システムの初期化が完了しました」のようなメッセージが出たり、docker ps -a
で全コンテナのSTATUS
がUp
になれば準備完了です。
4.4. localhostにアクセス
GitLabが起動したら、http://localhost
にアクセスします
4.5. ログイン!
rootユーザーで初期ログインします
- ユーザー名:
root
- パスワード: 次のコマンドで確認できます(24時間経つと消えるのでお早めに)
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
初回ログイン後は、セキュリティのために必ずパスワードを変更してください。右上のユーザーアイコン > Preferences > Password からパスワードを変更できます。
ここまでやれたらとりあえずGitLabを使えるようになっていると思います。試しにGitHubで使ってた分のアカウントを登録したりして楽しみましょう。
5. 他のPCからアクセスできるようにする
ネットを通してとなると分からないですが、家の中のPC間だったら結構すぐできます。
5.1. ホストPCのIPアドレスの取得
まずはGitLabを動かしているPCのIPアドレスを取得します。
windows設定の「ネットワークとインターネット」>「イーサネット」の「IPv4アドレス」の箇所です
または、コマンドプロンプトで次のコマンドを実行しても確認できます
ipconfig
5.2. hostsに書き込む
IPアドレスが取得できたら、C:\Windows\System32\drivers\etc\hosts
にIPアドレスを追記します(管理者権限が必要です)。
最後の行にIPアドレス gitlab.com
と書きます。
192.168.1.xxx gitlab.local
IPアドレスは実際の値に、gitlab.local
はdocker-compose.yml
で設定したホスト名に合わせてください。
5.3. アクセスする側のPCにも書き込む
別のPCのhostsにも同じ内容を追記します。
5.4. アクセス!
別のPCでブラウザ開いてアクセスしてみましょう
6. お疲れ様でした
クソ疲れました。でもGitLab楽しいからヨシ!
GitHubに置いてあるリポジトリのインポートはこれ、逆にGitHubをGitLabデータのスペアや公開用に使うならこれとか読むといいと思います。
そのうちミニPC買ってGitLabホスティングして、24時間365日稼働させたいです。
あとGitHubをストレージ代わりにしつつ、NAS買って家の中でも冗長化したい……ついでにデカめの動画とかゲームとか保存したい……
VPN使えば外からもアクセスできるんでしたっけ?そういうのもやってみたい……。