既にdocker-compose up
でビルドしたコンテナについて、初期投入するデータベースとアカウントを更新、もしくは作り直したいと思います。
試しに、コンテナとイメージとネットワークを消した状態でコンテナを作り直しました(ビルド)しました。
具体的には、docker-compose.ymlの情報を書き換えて、````docker-compose build --no-cache```で作り直しました。
しかし、既にビルドした時の情報が残ってしまい、データベースとアカウントが変更されませんでした。
(想定では、db_1 | Initializing database
という処理が走ってデータの作成がされると考えていました。)
他に消さないといけない情報や、ビルドの方法がありますでしょうか?
環境
mac:10.14.4
docker: 2.0.0.3
設定ファイル
nginxとphpとmysqlの環境を構築
docker-compose
変更前
docker
1version: '3.7' 2services: 3 db: 4 build: ./docker/db 5 environment: 6 MYSQL_DATABASE: test 7 MYSQL_ROOT_PASSWORD: pass 8 MYSQL_USER: user 9 MYSQL_PASSWORD: psss 10 ports: 11 - ${MYSQL_PORT}:3306
変更後
dbコンテナの設定値がテスト用だったので、書き換えて実行しました。
docker
1version: '3.7' 2services: 3 db: 4 build: ./docker/db 5 environment: 6 MYSQL_DATABASE: product 7 MYSQL_ROOT_PASSWORD: rootpass 8 MYSQL_USER: product_user 9 MYSQL_PASSWORD: productpass 10 ports: 11 - 3306:3306
Dockerfile
Dockerfileは./docker/db
配下にMySQLのバージョンを指定する下記のファイルを用意しました。
Dockerfile
1FROM mysql:5
事象
変更後のビルド後、dockerに接続してmysqlにログインしようとしましたがログインできませんでした。
しかし、変更前の情報(IDをuser、パスワードをpassword)であれば接続できました。
sh
1$ docker-compose db exec sh 2$ mysql -uuser -p 3(パスワード入力) 4mysql >
試した事
コンテナ、イメージ、ネットワークを全て削除した状態でビルド
冒頭でも書きましたが、既存データの影響もない状態でビルドし直しましたが変わりませんでした。
MySQLのバージョンを5系から8系に変更した状態でビルド
MySQLのイメージを8系に変えてビルドしました。
Dockerile
1FROM mysql:8
起動するMySQLのバージョンは変わりましたが、データベースに登録されているユーザー情報と、データベースは前の状態でした。
ディレクトリを変えてビルド
更新とは別ですが、MySQLのイメージを使うと共通して生じる問題なのか気になって調べてみました。
コンテナ名を変えるだけ良かったかもしれませんが、別ディレクトリで変更後の情報を入れた状態にして実行しました。
この場合、新しい状態になりました。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。