TOP

docker-machineからVagrant+Bargeに乗り換えた話

2017-12-21 23:36:58

開発環境構築には、ずっとdocker-machineを使っててそれなりに充足はしてたんですが、最近になってWindowsが「○○ Creator Update」みたいなのを定期的に行うようになって、その度に、docker-machineとVirtualBoxもろともバージョンアップを求められる、場合によっては、仮想マシンごと作り直さないと動かないみたいな現象に陥るため、毎回いちいち業務中にそんなの対応してられないってことで、docker-machineを使うのをやめて乗り換え先を探す事にしました

Barge

Bargeという軽量OSがとてつもなくよさげだったので乗り換える事に

Vagrant

とにかく最短で開発環境を構築できる、かつ、現場で支給されるPCも、Win,Macとまちまちなので、どのプラットフォームでも同じ手順で集約出来るVagrantが適切な気がしたので、Vagrant版を使う事にしました

※ちなみに今回の構築はWindows10です

Vagrant: MSYS2でPATHを通す

コマンドプロンプトやらPowerShellやらは使いたくないのでMSYS2からVagrantを操作します

インストール時にWindowsホスト側に環境変数PATHが設定されますが、MSYS2側に引き継がれない場合は以下を実行します

MSYS2にWindwosのPATHが引き継がれなかった時のメモ

Vagrant: ディレクトリをつくる

Vagrantについてはnoobなので必要最低限ぐらいしかしてないです

$ mkdir -p Vagrant/barge
$ cd Vagrant/barge

Vagrant: Vagrantfileを書く

Vagrantfileが公開されているので、これを拝借してちょっと手を加えました

$ vagrant plugin install vagrant-disksize

SSD+HDD構成だったので、HDDのPATHをVAGRANT_HOME環境変数に設定。(デフォは[ユーザ名]/.vagrand.d/とかになってるはず)

キー: VAGRANT_HOME
値: D:/Vagrant/.vagrant.d/

最終的なVagrantfileはこうなりました

Vagrant: vagrant sshが繋がらない

$ vagrant up

upしたあと、vagrant sshとしても繋がらなかった

調べるの面倒だったので直接~/.ssh/configに書きました

$ vagrant ssh-config
Host barge
  HostName 127.0.0.1
  User bargee
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile D:/Vagrant/barge/.vagrant/machines/barge/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

$ cat ~/.ssh/config
Host barge
  HostName 127.0.0.1
  Port 2222
  User bargee
  IdentityFile /d/Vagrant/barge/.vagrant/machines/barge/virtualbox/private_key
  StrictHostKeyChecking no

$ ssh barge

barge: docker-composeを入れる

先人の記事よりコマンド拝借してコピペ(バージョンだけ都度確認)

$ wget -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m`
$ chmod +x docker-compose-`uname -s`-`uname -m`
$ sudo mv docker-compose-`uname -s`-`uname -m` /opt/bin/docker-compose
$ sudo chown root:root /opt/bin/docker-compose

barge: pkg

9zillaを入れるためにgitとvimを入れる

$ sudo pkg install git
$ sudo pkg install vim
$ git clone https://github.com/nobiki/9zilla

ここでエラーになってしまったため後日調査(とりあえずdocker-compose.ymlだけコピペで入れました)

$ docker-compose -f 9zilla-docker-compose.yml up -d

ssh: 中のコンテナにSSHする

SSHをdaemon化してあるコンテナに対してはホスト(barge)を踏み台にして接続

$ cat ~/.ssh/config
Host barge
  HostName 127.0.0.1
  Port 2222
  User bargee
  IdentityFile /d/Vagrant/barge/.vagrant/machines/barge/virtualbox/private_key
  StrictHostKeyChecking no

Host 9zilla
  HostName 127.0.0.1
  Port 19022
  User 9zilla
  IdentityFile ~/.ssh/9zilla_rsa
  ProxyCommand  ssh -W %h:%p barge
  StrictHostKeyChecking no

$ ssh 9zilla

起動時にdocker-compose startする

/etc/init.d/start.shが起動時に実行されるそうなので、以下を記述

$ cat /etc/init.d/start.sh
/opt/bin/docker-compose -f /home/bargee/compose/9zilla-docker-compose.yml start