DockerでGitLabを試してみる
GitLabをDockerで動かしてみたときのメモ。
一応、データは永続化のためVolumeに保存します。
なお、環境はWindowsでDocker Toolboxを使用しています。
docker-compose.yml
データ永続化のため、一部Volumeに切り出します。
version: '2'
# volume定義
volumes:
config-vol:
driver: 'local'
logs-vol:
driver: 'local'
data-vol:
driver: 'local'
# service定義
services:
gitlab:
image: gitlab/gitlab-ce:latest
volumes:
# ${volumesに定義したkey}:{マウントパス}
- config-vol:/etc/gitlab
- logs-vol:/var/log/gitlab
- data-vol:/var/opt/gitlab
ports:
- "443:443"
- "80:80"
- "2222:22"
restart: always
ポートは、エラーが出たので、22ポートのみ2222ポートに変更。
(おそらく、Docker用仮想マシンとのsshですでに使っていることが原因かと思いますが、深堀はしていない...)
docker-compose.ymlファイルが用意できたら、下記コマンドでサービス開始。
docker-compose up -d
ちょっと時間がかかるので、しばらく待つ。
GitLabへアクセス
Dockerが起動している仮想マシンへアクセスすると、GitLabの画面が表示されます。
まだ起動が終わってない場合は、500エラーが表示されますので、しばらく待機。
(Volumeの設定がミスっている場合などでも500エラーは出ます。)
設定などは、GitLabについてまとめているサイトを参考に。
ssh設定変更
Windowsなのでgit bashを実行し、作業します。
docker-compose.ymlで、sshをDockerが起動しているマシンの2222ポートで行うように設定したため、sshの設定ファイル~/.ssh/config
を下記の通りに変更します。
Host 192.168.99.100
HostName 192.168.99.100
User git
Port 2222
IdentityFile ~/.ssh/id_rsa.pub
TCPKeepAlive yes
IdentitiesOnly yes
Host
とHostName
にはDockerが起動しているマシンのIPを入れます。
IdentityFile
には、このあと作成するssh公開キーのパスを指定します。
リモートリポジトリの登録
Git管理下のディレクトリにて、リモートリポジトリとして作成したGitLabコンテナを登録します。
GitLabにて、プロジェクトを作成し、画面に表示されるURIをコピーします。
手元ではこんな感じ。
git@2ca1d50bd3da:Y-Kanoh/{プロジェクト名}.git
これでは、ホスト名のところにコンテナのハッシュ値が指定されているので、ハッシュ値をDockerが起動しているマシンのIPに変更します。
git@192.168.99.100:Y-Kanoh/{プロジェクト名}.git
この編集したURIをもとに、リモートリポジトリを登録します。
git remote add origin git@192.168.99.100:Y-Kanoh/{プロジェクト名}.git
sshキーの登録
ここで詰まりました。
sshキーを作成し、登録します。
何回キーを登録しなおしてもうまくいかなかったのですが、下記サイトを参考にして、ようやく接続できました。
参考:git公開鍵の追加方法
接続確認コマンドは以下の通りです。
(ssh用の22ポートを2222ポートに変更している点に注意)
Permission denied (publickey).
などが表示されず、Welcome to GitLab
と言われれば成功です。
ssh -T 192.168.99.100 -p 2222
あとはGit管理下のソースをpushすれば完了です。
追記
上記、sshキーを発行するときに、以下のコマンドを忘れるのでメモ。
$ eval $(ssh-agent -s)
$ ssh-add ~/.ssh/id_rsa