動機
docker-composeでmagento(php製ECフレームワーク)を動かしたかった。
環境差異を無くすためにdocker on vagrantになってて楽なはずだった
https://github.com/andreaskoch/dockerized-magento
問題
mysqlとnginxのコンテナが死んでた。
>> docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------
dockerizedmagento_cache_1 /entrypoint.sh redis-server Up 6379/tcp
dockerizedmagento_fullpagecache_1 /entrypoint.sh redis-server Up 6379/tcp
dockerizedmagento_installer_1 /bin/install.sh Up
dockerizedmagento_mysql_1 /entrypoint.sh mysqld Exit 1
dockerizedmagento_nginx_1 entrypoint.sh nginx Exit 1
dockerizedmagento_php_1 php-fpm Up 9000/tcp
dockerizedmagento_sessions_1 /entrypoint.sh redis-server Up 6379/tcp
dockerizedmagento_solr_1 /usr/bin/java -Xmx1024m -D ... Up 8983/tcp
エラーを見ると
==> default: Forwarding ports...
default: 80 => 80 (adapter 1)
default: 443 => 443 (adapter 1)
default: 3306 => 3306 (adapter 1)
default: 8983 => 8983 (adapter 1)
default: 22 => 2222 (adapter 1)
のあとに「3306番ポートはホスト上で専有されてるよ」って言われてた
解決策
mysqlのプロセスを様々な手段で消そうとしたけど死なない
http://mysql.javarou.com/dat/000580.html
OSXのLaunchDaemon的なやつで不死身化してるんだと思い消し方をググった
http://stackoverflow.com/questions/100948/how-do-you-stop-mysql-on-a-mac-os-install
homebrewでmysql入れた人は
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
で不死の力を弱められる
結果
なんでホスト側の環境に依存してしまうようなVagrantfileなのかよくわかってないが、追々追記する。とりあえず動いたのでよし。