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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

docker-compose

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

MySQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

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

Q&A

解決済

2回答

2721閲覧

MySQLコンテナをdocker-composeで起動すると、ステータスが「Exit」になってしまう。

s.h_1783

総合スコア11

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

docker-compose

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

MySQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

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

0グッド

0クリップ

投稿2022/03/05 12:23

前提・実現したいこと

docker上でPHPとMySQLのコンテナを起動しようとしていますが、
コンテナ起動後にプロセスを確認すると、MySQLが乗っているdbコンテナのみが起動直後に「Exit 1」のステータスとなってしまいます。
dbコンテナも正常に起動させるために、解決方法を模索しています。

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

発生している問題

下記「該当のソースコード」の通りにdocker周りの各ファイルを準備し、下記手順でビルド~コンテナ起動~プロセス確認まで実施しても、dbコンテナのステータスのみが「Exit 1」となり、終了してしまいます。

  1. docker-compose build(dockerコンテナのビルド)
  2. docker-compose up -d(dockerコンテナの非同期起動)
  3. docker-compose ps(dockerコンテナのプロセス確認)

エラーメッセージ

下記の通りdbコンテナのログを取得しましたが、起動時にエラーは発生していないように見えています。

・「docker-compose logs db」の実行結果

log

1Attaching to part2_db_1 2db_1 | [Entrypoint] MySQL Docker Image 5.6.41-1.1.7 3db_1 | [Entrypoint] Starting MySQL 5.6.41-1.1.7 4db_1 | 2022-03-05 04:59:46 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 5db_1 | 2022-03-05 04:59:46 0 [Note] mysqld (mysqld 5.6.41) starting as process 1 ... 6db_1 | 2022-03-05 04:59:46 1 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive

該当のソースコード

・docker-compose.yml

yml

1version: "3" 2 3services: 4 app: 5 build: 6 context: . 7 dockerfile: docker/app/Dockerfile 8 ports: 9 - "50080:80" 10 volumes: 11 - ./src:/var/www/html 12 depends_on: 13 - db 14 15 db: 16 image: mysql/mysql-server:5.5.62 17 ports: 18 - "53306:3306" 19 volumes: 20 - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf 21 - ./docker/db/mysql_data:/var/lib/mysql 22 env_file: 23 - ./docker/db/db-variables.env

・Dockerfile

FROM php:7.4-apache WORKDIR /var/www/html # PHP で必要なライブラリをインストール RUN apt-get update \ && apt-get install -y libonig-dev libzip-dev unzip mariadb-client \ && docker-php-ext-install pdo_mysql mysqli mbstring zip # composer のインストール COPY --from=composer:1.10 /usr/bin/composer /usr/bin/composer ENV COMPOSER_ALLOW_SUPERUSER 1 # ファイルのコピー COPY ./src /var/www/html COPY ./docker/app/php.ini /usr/local/etc/php/php.ini # Heroku で Apache2 が設定エラーになることへの対応 # https://github.com/docker-library/wordpress/issues/293 COPY ./docker/app/run-apache2.sh /usr/local/bin/ CMD [ "run-apache2.sh" ]

・db-variables.env

env

1MYSQL_DATABASE=book_log 2MYSQL_PASSWORD=pass 3MYSQL_ROOT_PASSWORD=pass 4MYSQL_USER=book_log

・my.cnf

cnf

1[mysqld] 2collation-server=utf8mb4_general_ci 3character-set-server=utf8mb4 4 5[client] 6default-character-set=utf8mb4

自分で調べたことや試したこと

いろいろ試行錯誤し、docker-compose.ymlのvolumesの- ./docker/db/mysql_data:/var/lib/mysqlをコメントアウトしたら、dbコンテナが終了せずに起動しました。
ただし、該当箇所をコメントアウトしたままだとデータの永続化ができないため、dbコンテナを再起動する度に蓄積した情報が消えてしまいます。
データの永続化をしつつ、dbコンテナを起動する方法があれば、ご教示いただきたいです。

・docker-compose.yml

yml

1version: "3" 2 3services: 4 app: 5 build: 6 context: . 7 dockerfile: docker/app/Dockerfile 8 ports: 9 - "50080:80" 10 volumes: 11 - ./src:/var/www/html 12 depends_on: 13 - db 14 15 db: 16 image: mysql/mysql-server:5.5.62 17 ports: 18 - "53306:3306" 19 volumes: 20 - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf 21 # - ./docker/db/mysql_data:/var/lib/mysql ←コメントアウトしたらdbコンテナが起動できる 22 env_file: 23 - ./docker/db/db-variables.env

使っているツールのバージョンなど補足情報

・OS:Windows 10(OSビルド:19042.1526)
・Docker:20.10.11

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

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

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

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

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

guest

回答2

0

返信が遅くなり申し訳ありません。
ご回答ありがとうございます。
volumeコンテナを別定義することで、本事象は解消されました。

投稿2022/03/28 01:35

s.h_1783

総合スコア11

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

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

0

ベストアンサー

Windowsの場合は少しクセがあるようで、以下のようにvolumeコンテナを定義すれば解決するかもしれません。
こちらのissueを参考にしました

yaml

1version: "3" 2 3services: 4 app: 5 build: 6 context: . 7 dockerfile: docker/app/Dockerfile 8 ports: 9 - "50080:80" 10 volumes: 11 - ./src:/var/www/html 12 depends_on: 13 - db 14 15 db: 16 image: mysql/mysql-server:5.5.62 17 ports: 18 - "53306:3306" 19 volumes: 20 - mysql_data:/var/lib/mysql # <-コメントアウトした箇所 21 - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf 22 env_file: 23 - ./docker/db/db-variables.env 24 25volumes: # <-データ領域を定義 26 mysql_data:

投稿2022/03/05 14:13

Supernove

総合スコア1154

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問