開発環境構築には、ずっと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なので必要最低限ぐらいしかしてないです

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

Vagrant: Vagrantfileを書く

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

1
$ vagrant plugin install vagrant-disksize

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

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

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

Vagrant: vagrant sshが繋がらない

1
$ vagrant up

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ 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を入れる

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

1
2
3
4
$ 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を入れる

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ 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が起動時に実行されるそうなので、以下を記述

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

Windowsで起動と終了に使うバッチファイル(2018/03/03追記)

nobiki/vagrant-barge — Bitbucket

いちいちvagrant haltしてからWindowsシャットダウンとかが面倒だったので最近はこれ使ってます