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

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

ただいまの
回答率

90.53%

  • MySQL

    5832questions

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

  • Docker

    701questions

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

  • docker-compose

    125questions

docker-composeによるMySQLの設定

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 289

Matt

score 20

dockercomposeを使ってWebアプリの開発環境を作っています。
下記のようなymlファイルを作成し,upコマンドでを実行したところエラーが発生してMySQLのコンテナが停止してしまいます.データの永続化を設定するvolumes部分が原因かと思われますが,修正方法が分からず困っています.
ちなみにDocker for Macでは正常に動きました.

version: '3'
services:
    db:
        image: mysql:5.7
        ports:
            - "3306:3306"
        environment:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_DATABASE=testdb
            - MYSQL_USER=hello
            - MYSQL_PASSWORD=world
        volumes:
            - ./mysql/db_data:/var/lib/mysql

 発生している問題・エラーメッセージ

db_1  | 2018-07-18T00:15:22.520365Z 0 [ERROR] InnoDB: Operating system error number 22 in a file operation.
db_1  | 2018-07-18T00:15:22.520951Z 0 [ERROR] InnoDB: Error number 22 means 'Invalid argument'
db_1  | 2018-07-18T00:15:22.521444Z 0 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
db_1  | 2018-07-18T00:15:22.521926Z 0 [ERROR] InnoDB: File ./ib_logfile0: 'aio write' returned OS error 122. Cannot continue operation
db_1  | 2018-07-18T00:15:22.522235Z 0 [ERROR] InnoDB: Cannot continue operation.

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

・Windows 10 Home 64bit
・Docker Toolbox
・docker version

Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24302
 Built: Fri Mar 23 08:31:36 2018
 OS/Arch:       windows/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.05.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.10.1
  Git commit:   f150324
  Built:        Wed May  9 22:20:42 2018
  OS/Arch:      linux/amd64
  Experimental: false


・docker-compose version

docker-compose version 1.20.1, build 5d8c71b2
docker-py version: 3.1.4
CPython version: 3.6.4
OpenSSL version: OpenSSL 1.0.2k  26 Jan 2017
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

Windowsユーザでないので検証ができないのですが、

https://github.com/docker/for-win/issues/1584
https://github.com/docker-library/mysql/issues/371

この辺りが参考になるかもしれません。
docker for windowsは駄目だったがdocker-toolboxなら大丈夫だった(またはその逆?)という情報があります。
また、 1000:50 のuserで起動したら解決したという記載があるので、

version: '3'
services:
    db:
        image: mysql:5.7
        ports:
            - "3306:3306"
        environment:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_DATABASE=testdb
            - MYSQL_USER=hello
            - MYSQL_PASSWORD=world
        volumes:
            - ./mysql/db_data:/var/lib/mysql
        user: "1000:50"

と、変更して、

docker-compose down
docker-compose up

と、コンテナ作り直したら動く、かもです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/18 11:22 編集

    docker-compose.ymlは動きませんでした.
    ひとまずdocker runで2番目のURLを参考に動かしてみたら,MySQLを正常に起動させることができたので,これをcomposeで書き換えてみたいと思います!
    ありがとうございます.

    キャンセル

  • 2018/07/18 11:31

    糸口が見つかったようで良かったです。私の手元で検証できないので、すみませんが頑張って下さい。

    キャンセル

  • 2018/07/18 11:37

    command: "--innodb_use_native_aio=0"を付け加えると起動しました!
    ありがとうございました!!
    https://stackoverflow.com/questions/48239668/fails-to-initialize-mysql-database-on-windows-10

    キャンセル

  • 2018/07/18 11:57

    おめでとうございます。良かったです。

    キャンセル

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

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • MySQL

    5832questions

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

  • Docker

    701questions

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

  • docker-compose

    125questions