Docker の centos:centos6 イメージで mysql 5.6 を動作させるには
新しく参加した Rails プロジェクトを DockerToolbox で動作させたいと思っています。
Rails のバージョンは 4.0.0 です。
# ...省略 Docker Toolbox のセットアップ...
$ git clone path/to/repository.git project
$ cd project
# gem をインストール
$ bundle --path vendor/bundle
# fig を起動
$ fig up -d
# migration を実行(DBは作成済み)
$ rake db:migrate
上記 rake タスクが失敗してしまいます。
エラー内容は下記のとおりです。
Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead: ...
エラーメッセージで調べると参考の通り、 MySQL のバージョンが 5.7.3 以降の場合、 activerecord の実装が原因で MySQL がエラーを吐くようです。
そこで、MySQL のバージョンを 5.6 系にしようとしたのですが、うまくできません。
fig.yml と mysql の Dockerfile は下記の通りです。
fig.yml
mysql:
build: ./docker/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
volumes_from:
- data
ports:
- "3306:3306"
data:
image: centos:centos6
command: /bin/bash
volumes:
- /data
- /var/lib/mysql
docker/mysql/Dockerfile
FROM mysql:5.6
RUN cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ADD config/my.cnf /etc/my.cnf
この状態でこうなります。
$ fig build
$ fig up -d
$ fig ps
# => Name Command State Ports
# => ---------------------------------------------------------------------------------------------------------
# => app_data_1 /bin/bash Exit 0
# => app_mysql_1 /entrypoint.sh mysqld Exit 1
#
fig logs
の結果はこうです。
mysql_1 | mkdir: cannot create directory '': No such file or directory
おそらくここでエラーとなっているのだろう、まではわかったのですが、これから先がどうすれば良いか皆目わかりません。