質問: 既に`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 #### 変更前 ``` version: '3.7' services: db: build: ./docker/db environment: MYSQL_DATABASE: test MYSQL_ROOT_PASSWORD: pass MYSQL_USER: user MYSQL_PASSWORD: psss ports: - ${MYSQL_PORT}:3306 ``` #### 変更後 dbコンテナの設定値がテスト用だったので、書き換えて実行しました。 ``` version: '3.7' services: db: build: ./docker/db environment: MYSQL_DATABASE: product MYSQL_ROOT_PASSWORD: rootpass MYSQL_USER: product_user MYSQL_PASSWORD: productpass ports: - 3306:3306 ``` ### Dockerfile Dockerfileは`./docker/db`配下にMySQLのバージョンを指定する下記のファイルを用意しました。 ``` FROM mysql:5 ``` 事象 -- 変更後のビルド後、dockerに接続してmysqlにログインしようとしましたがログインできませんでした。 しかし、変更前の情報(IDをuser、パスワードをpassword)であれば接続できました。 ``` $ docker-compose db exec sh $ mysql -uuser -p (パスワード入力) mysql > ``` 試した事 ---- ### コンテナ、イメージ、ネットワークを全て削除した状態でビルド 冒頭でも書きましたが、既存データの影響もない状態でビルドし直しましたが変わりませんでした。 ### MySQLのバージョンを5系から8系に変更した状態でビルド MySQLのイメージを8系に変えてビルドしました。 ``` FROM mysql:8 ``` 起動するMySQLのバージョンは変わりましたが、データベースに登録されているユーザー情報と、データベースは前の状態でした。 ### ディレクトリを変えてビルド 更新とは別ですが、MySQLのイメージを使うと共通して生じる問題なのか気になって調べてみました。 コンテナ名を変えるだけ良かったかもしれませんが、別ディレクトリで変更後の情報を入れた状態にして実行しました。 この場合、新しい状態になりました。
回答: 解決しました。 volumeを削除したところ、初期化出来ました。