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

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

新規登録して質問してみよう
ただいま回答率
85.40%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

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

Docker

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

Q&A

解決済

1回答

387閲覧

DockerでMySQLコンテナが立ち上がらない

luuguas

総合スコア500

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

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

Docker

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

0グッド

0クリップ

投稿2024/07/14 16:10

発生している問題

以下のサイトを参考にして、Docker内でMySQLを使おうとしています。

しかし、Dockerイメージをビルドしたあとにdocker compose upでコンテナを立ち上げようとすると、db-1 exited with code 1と表示されMySQLのコンテナが立ち上がりません。

初学者なのでエラーの内容もよく分かっておらず、どうしたらよいか困っています。どなたか解決方法を教えていただけないでしょうか。

試したこと

Chapter 04に載っているDockerfileおよび、Chapter 11に載っているdocker-compose.yamlをほぼそのまま書き写してルートディレクトリに配置した。

  • Dockerfile

docker

1#python3.12のイメージをダウンロード 2FROM python:3.12 3#pythonの出力表示をDocker用に設定 4ENV PYTHONUNBUFFERED=1 5 6WORKDIR /src 7 8#pipを使ってpoetryをインストール 9RUN pip install poetry 10 11#poetryの定義ファイルをコピー(存在する場合) 12COPY pyproject.toml* poetry.lock* ./ 13 14#poetryでライブラリをインストール(pyproject.tomlがすでに存在する場合) 15RUN poetry config virtualenvs.in-project true 16RUN if [ -f pyproject.toml ]; then poetry install --no-root; fi 17 18#uvicornのサーバーを立ち上げる 19ENTRYPOINT ["poetry", "run", "uvicorn", "api.main:app", "--host", "0.0.0.0", "--reload"]
  • docker-compose.yaml

yaml

1version: '3' 2services: 3 demo-app: 4 build: . 5 volumes: 6 - .dockervenv:/src/.venv 7 - .:/src 8 ports: 9 - 8000:8000 10 environment: 11 - WATCHFILES_FORCE_POLLING=true 12 db: 13 image: mysql:8 14 platform: linux/x86_64 15 environment: 16 MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' 17 MYSQL_DATABASE: 'demo' 18 TZ: 'Asia/Tokyo' 19 volumes: 20 - mysql_data:/var/lib/mysql 21 command: --default-authentication-plugin=mysql_native_password 22 ports: 23 - 33306:3306 24volumes: 25 mysql_data:

②以下のコマンドでイメージをビルドし、Chapter 05を参考にPoetry環境のセットアップとFastAPIのインストールをおこなった。

PS C:\Users\xxx\fastapi-test> docker compose build PS C:\Users\xxx\fastapi-test> docker compose run --entrypoint "poetry init --name demo-app --dependency fastapi --dependency uvicorn[standard]" demo-app PS C:\Users\xxx\fastapi-test> docker compose run --entrypoint "poetry install --no-root" demo-app

Chapter 07~Chapter 10で作成したapiディレクトリを配置した。

docker compose upを実行すると以下のログが表示され、FastAPIのコンテナは起動したがMySQLのコンテナは起動しなかった。

PS C:\Users\xxx\fastapi-test> docker compose up time="2024-07-15T00:27:00+09:00" level=warning msg="C:\\Users\\xxx\\docker-compose.yaml: `version` is obsolete" [+] Running 2/0 ✔ Container fastapi-test-demo-app-1 Created 0.0s ✔ Container fastapi-test-db-1 Recreated 0.1s Attaching to db-1, demo-app-1 db-1 | 2024-07-15 00:27:01+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.38-1.el9 started. db-1 | 2024-07-15 00:27:01+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' db-1 | 2024-07-15 00:27:01+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.38-1.el9 started. db-1 | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock' db-1 | 2024-07-14T15:27:02.150711Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. db-1 | 2024-07-14T15:27:02.152296Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead. db-1 | 2024-07-14T15:27:02.152584Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.38) starting as process 1 db-1 | 2024-07-14T15:27:02.161653Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. db-1 | 2024-07-14T15:27:02.235802Z 1 [ERROR] [MY-012526] [InnoDB] Upgrade is not supported after a crash or shutdown with innodb_fast_shutdown = 2. This redo log was created with MySQL 5.7.44, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html db-1 | 2024-07-14T15:27:02.235840Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error. db-1 | 2024-07-14T15:27:02.679026Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine db-1 | 2024-07-14T15:27:02.679210Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. iled. db-1 | 2024-07-14T15:27:02.679244Z 0 [ERROR] [MY-010119] [Server] Aborting db-1 | 2024-07-14T15:27:02.679703Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown compldb-1 | 2024-07-14T15:27:02.679244Z 0 [ERROR] [MY-010119] [Server] Aborting db-1 | 2024-07-14T15:27:02.679703Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.38) MySQL Community Server - GPL. db-1 | 2024-07-14T15:27:02.679703Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.38) MySQL Community Server - GPL. db-1 exited with code 1 ete (mysqld 8.0.38) MySQL Community Server - GPL. db-1 exited with code 1 db-1 exited with code 1 demo-app-1 | INFO: Will watch for changes in these directories: ['/src'] demo-app-1 | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) demo-app-1 | INFO: Started reloader process [1] using WatchFiles demo-app-1 | /src/.venv/lib/python3.12/site-packages/pydantic/_internal/_config.py:341: UserWarning: Valid config keys have changed in V2: demo-app-1 | * 'orm_mode' has been renamed to 'from_attributes' demo-app-1 | warnings.warn(message, UserWarning) demo-app-1 | INFO: Started server process [10] demo-app-1 | INFO: Waiting for application startup. demo-app-1 | INFO: Application startup complete.

補足情報(FW/ツールのバージョンなど)

  • OS: Windows 11 Home
  • エディタ: Visual Studio Code 1.91.1
  • ターミナル: Windows PowerShell
  • Docker Desktop 4.31.1
PS C:\Users\xxx\fastapi-test> docker compose version Docker Compose version v2.27.1-desktop.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

Upgrade is not supported after a crash or shutdown with innodb_fast_shutdown = 2. This redo log was created with MySQL 5.7.44, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html

エラーに上記が表示されています。データディレクトリに MySQL 5.7.44 で作成されたredo logがあり、更新に失敗しているようです。おそらく、一度MySQL 5.7で起動していたのではないでしょうか?

mysql_dataボリュームが作り直して問題ないのであれば、 docker compose down -v でボリュームも削除できるので、そのあとで docker compose up を試してみてください。

mysql_dataボリュームが必要であれば、バージョンを5.7に戻したあとでデータ取得してあとで戻す、などが必要そうです。

投稿2024/07/14 19:20

Eggpan

総合スコア3190

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

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

luuguas

2024/07/15 01:33

> docker compose down -v でボリュームも削除できるので、そのあとで docker compose up を試してみてください。 ご指摘の通りにボリュームごと削除して再度コンテナを立ち上げたところ、MySQLコンテナを正常に立ち上げることができました!(docker compose exec db mysql demo でコンテナが立ち上がっていることを確認できました) 丁寧に教えてくださりありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問