

新しく参加した Rails プロジェクトを DockerToolbox で動作させたいと思っています。  
Rails のバージョンは 4.0.0 です。

[code]

    # ...省略 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
    
[/code]

上記 rake タスクが失敗してしまいます。  
エラー内容は下記のとおりです。

[code]

    Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead: ...
    
[/code]

エラーメッセージで調べると[参考](http://qiita.com/the40san/items/b9130a9bdfb41c023d09)の通り、
MySQL のバージョンが 5.7.3 以降の場合、 activerecord の実装が原因で MySQL がエラーを吐くようです。

そこで、MySQL のバージョンを 5.6 系にしようとしたのですが、うまくできません。  
fig.yml と mysql の Dockerfile は下記の通りです。

**fig.yml**

[code]

    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
    
[/code]

**docker/mysql/Dockerfile**

[code]

    FROM mysql:5.6
    
    RUN cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    
    ADD config/my.cnf /etc/my.cnf
    
[/code]

この状態でこうなります。

[code]

    $ 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
    # 
    
[/code]

`fig logs` の結果はこうです。

[code]

    mysql_1         | mkdir: cannot create directory '': No such file or directory
    
[/code]

おそらく[ここ](https://github.com/docker-library/mysql/blob/master/5.6/docker-
entrypoint.sh#L20)でエラーとなっているのだろう、まではわかったのですが、これから先がどうすれば良いか皆目わかりません。


CC BY-SA 3.0
2015-11-05T07:19:28.793
18426
2016-10-19T06:25:41.583
13129
question
ruby-on-rails mysql docker
Docker の centos:centos6 イメージで mysql 5.6 を動作させるには


docker の実行環境を教えていただいてもよいでしょうか。  
rake db:migrate の実行がコンテナ内でのみ可能な環境になっているのかもしれないのでは、と考えました。

私の実行環境は OSX 上の docker-machine に boot2docker を使用しています。この環境で docker hub の mysql
で案内されていた mysqld の単体起動を以下のように行いました。

[code]

     % docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.6
    
[/code]

この mysqld は docker-machine の仮想ホスト(私はVirtualBoxです)の中から 3306/tcp
ポートが見える形になり、このコマンドを実行した Terminal 上では 3306/tcp ポートが見えません。

railsアプリケーションを docker コンテナ内に配備すると実行できるかもしれません。

[code]

    % docker run -it --link some-mysql:mysql --rm your-rails-app-container 'rake db:create && rake db:migrate && rails s'
    
[/code]

以上です。


CC BY-SA 3.0
2015-12-10T03:11:02.517
19834
2015-12-10T03:11:02.517
7456
18426
answer