[解決済み】Docker-Compose 永続化データ MySQL
2022-04-11 23:54:51
質問
を実行すると、MySQLのデータが永続化されないようです。
$ docker-compose down
を次のように変更します。
.yml
version: '2'
services:
# other services
data:
container_name: flask_data
image: mysql:latest
volumes:
- /var/lib/mysql
command: "true"
mysql:
container_name: flask_mysql
restart: always
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: 'test_pass' # TODO: Change this
MYSQL_USER: 'test'
MYSQL_PASS: 'pass'
volumes_from:
- data
ports:
- "3306:3306"
私の理解では、私の
data
を使用したコンテナ
volumes: - /var/lib/mysql
は、mysqlがコンテナにデータを保存するローカルマシンのディレクトリにマッピングし、このマッピングのおかげで、コンテナが破壊されてもデータが持続するはずです。また
mysql
コンテナは、データベースへの単なるクライアントインターフェイスであり、ローカルディレクトリを見ることができます。
volumes_from: - data
この回答を試みても、うまくいきませんでした。 Docker-Compose 永続化データのトラブルについて
EDIT
を変更しました。
.yml
というディレクトリを作成し
./data
を実行したところ
docker-compose up --build
は
mysql
コンテナが起動しない場合、次のようなエラーがスローされます。
data:
container_name: flask_data
image: mysql:latest
volumes:
- ./data:/var/lib/mysql
command: "true"
mysql:
container_name: flask_mysql
restart: always
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: 'test_pass' # TODO: Change this
MYSQL_USER: 'test'
MYSQL_PASS: 'pass'
volumes_from:
- data
ports:
- "3306:3306"
flask_mysql | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
flask_mysql | 2016-08-26T22:29:21.182144Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
flask_mysql | 2016-08-26T22:29:21.185392Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
解決方法は?
データコンテナは余分な回避策です。
データボリューム
を使えば、うまくいくはずです。あなたの
docker-compose.yml
に変更します。
version: '2'
services:
mysql:
container_name: flask_mysql
restart: always
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: 'test_pass' # TODO: Change this
MYSQL_USER: 'test'
MYSQL_PASS: 'pass'
volumes:
- my-datavolume:/var/lib/mysql
volumes:
my-datavolume:
Dockerは、ボリュームを
/var/lib/docker/volumes
フォルダーに格納されます。このボリュームは、あなたが
docker-compose down -v
関連
-
[解決済み] Docker: ドッカープッシュのための認証方法は?
-
[解決済み] アルパインリナックスにGoをインストールする方法
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] Dockerでデータベースなどの永続的なストレージを扱う方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】docker-composeで単一のコンテナを再起動する方法
-
[解決済み】docker: 実行可能ファイルが$PATHに見つからない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] docker compose でホストネットワークを使用するには?
-
[解決済み] docker-compose: バインドマウントとマネージドマウントのマウントを定義する
-
[解決済み] Dockerfileで画像にタグを付けるには?重複
-
[解決済み] DockerコンテナでPipeworkを使用する際に、RTNETLINK Operation Not Permittedが発生するのはなぜですか?
-
[解決済み】Dockerコンテナ内のRootパスワードについて
-
[解決済み】特定のコンテナのみdocker-composeを立ち上げる。
-
[解決済み】DockerFileの "VOLUME "命令を理解する。
-
[解決済み】非 root で Docker COPY するには?
-
[解決済み】Kubernetes イメージを更新するデプロイメントの作り方
-
[解決済み】Docker化したPostgresデータベースのデータをボリュームで永続化する方法