DockerでGitLabを試してみる

GitLabをDockerで動かしてみたときのメモ。
一応、データは永続化のためVolumeに保存します。
なお、環境はWindowsでDocker Toolboxを使用しています。

docker-compose.yml

データ永続化のため、一部Volumeに切り出します。

docker-compose.yml
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

HostHostNameには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すれば完了です。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.