質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2984閲覧

【Docker】MySQLイメージでコンテナを作り直しても初期化しない理由はなんでしょうか?

hasshy

総合スコア102

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/06/01 09:08

編集2019/06/01 09:15

既に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のイメージを使うと共通して生じる問題なのか気になって調べてみました。
コンテナ名を変えるだけ良かったかもしれませんが、別ディレクトリで変更後の情報を入れた状態にして実行しました。
この場合、新しい状態になりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
volumeを削除したところ、初期化出来ました。

投稿2019/06/01 09:41

hasshy

総合スコア102

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問