Dockerを使い始めたばかりで、tutum/lampを実行してexec
の束を使って、私のニーズに合わせてMySQLをセットアップすることができました。例:Dockerfileを使用してMySQLを設定する
docker run -d -p 80:80 -p 3306:3306 --name test tutum/lamp
...
docker exec test mysqldump --host somehost --user someuser --password --databases somedatabase > dump.sql
docker exec test mysql -u root < dump.sql
ただし、これをDockerfileに変換する際に問題が発生しています。具体的には、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
で以下の結果:
FROM tutum/lamp
EXPOSE 80 3306
...
RUN mysqldump --host=$DB_IP --user=$DB_USER --password=$DB_PASSWORD --databases somedatabase > dump.sql
RUN mysql -u root < dump.sql
これは実際には役に立ちません。ビルド中ではなくコンテナを起動するときに問題が発生するためです。また、私は 'CMD'をベースイメージから守りたい。私は、MySQLデーモンを起動してコマンドを実行するスクリプトを '実行する 'ことが解決策であると考えています。 – user3170702
あなたは正しいですが、私はtutum/lampの仕組みを正確には知らなかったので、動作させるまで少し遊んだことがあります。私は私の答えを編集しました。 –