前提・実現したいこと
docker上でPHPとMySQLのコンテナを起動しようとしていますが、
コンテナ起動後にプロセスを確認すると、MySQLが乗っているdbコンテナのみが起動直後に「Exit 1」のステータスとなってしまいます。
dbコンテナも正常に起動させるために、解決方法を模索しています。
発生している問題・エラーメッセージ
発生している問題
下記「該当のソースコード」の通りにdocker周りの各ファイルを準備し、下記手順でビルド~コンテナ起動~プロセス確認まで実施しても、dbコンテナのステータスのみが「Exit 1」となり、終了してしまいます。
- docker-compose build(dockerコンテナのビルド)
- docker-compose up -d(dockerコンテナの非同期起動)
- 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
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。