【解決済み】Docker環境再構築でのトラブル(MySQLのコンテナが正常に起動しない不具合)

2024.08.05 17:06 開発環境 web制作 ブログ

【解決済み】Docker環境再構築でのトラブル(MySQLのコンテナが正常に起動しない不具合)の画像

こんにちは。Omitナカヤマです。

dockerの環境構築で躓いたので記事にまとめました。
(教えてもらいながらなんとか原因が分かりましたが、1日くらい費やしてしまいました、、、)

こちらの記事が似た様な内容で躓いていらっしゃる方の参考になれば幸いです。

経緯

別のDocker環境を構築する際に、既存で開発しているDocker環境を誤って削除してしまったため、再度Docker環境を構築する必要が生じました。
docker環境含むソースコードはGitHubで管理されていたので、今まで稼働していた環境を構築するのは容易だと思っていましたが、MySQLのコンテナが正常に起動しない不具合に直面しました。
 

不具合の内容

MySQLのコンテナを起動しようとした際に次のエラーが発生しました。

bash: line 1: /entrypoint.sh: No such file or directory

Dockerでentrypoint.shのファイルが見つからないイメージ画像

原因発見のために行ったこと

entrypoint.shファイルの作成
 →サーバー内で実行されるファイルのため、ローカルで生成しても意味がありませんでした。

・Docker Desktopのアップデート
 →状況は変わりませんでした。

・Dockerでダウンロードしているイメージのバージョン情報を確認
 →元々使用していたバージョン(8.0)と異なるバージョン(8.4)で稼働していました。
 (こちらが原因でentrypoint.shが正常に実行できない状態にありました)
-docker-compose.ymlの設定-
docker-compose.ymlの設定でentrypoint.shが実行される処理の記述
-Docker Imageの詳細確認-
Dockerで稼働しているMySQLコンテナのバージョンが8.4になってしまっているイメージ画像

原因の詳細追及

取り急ぎ元々稼働していたバージョン8系の状態を確認してみました。
  1. Docker Hubへアクセスし、mysqlで検索する
    DockerHubでmysqlイメージの検索
  2. Tagsから該当のイメージバージョンを選択する
    DockerHubで該当のイメージの中身を確認する①
  3. GitHubで詳細を確認する
    DockerHubで該当のイメージの中身を確認する②
  4. GitHubで変更のあった箇所を確認する
    GitHubで変更のある箇所を確認する
  5. GitHubで変更のあった箇所をdiffで確認する
    GitHubで変更のあった箇所をdiffで確認する
画像から分かる通りベースイメージの指定が以下の様に書き変わったことにより、その他の部分に影響が出ていると仮定しました。
oraclelinux:8-slim → oraclelinux:9-slim

原因解決への対応

docker-compose.ymlに設定していたMySQLのイメージを、動作していたバージョン(8.0)でダウンロードするように設定を変更しました。

    # この設定だと8系の最新バージョンがダウンロードされてしまう
    mysql:
        container_name: mysql
        image: mysql:8

これを、8.0系で最新版のMySQLのバージョンをダウンロードする設定に変更しました。

    # 8.0系の最新バージョンでダウンロードされるように設定する
    mysql:
        container_name: mysql
        image: mysql:8.0

この変更により、コンテナは正常に動作しました。

結論

今回のトラブルを通じて、Docker環境の管理におけるバージョン依存関係の重要性を痛感しました。
Dockerの設定ファイル等全く変更していない場合でも、Dockerのイメージをダウンロードする際に別のバージョンがダウンロードされるということが認識としてあまりなかったので非常に勉強になりました。
環境再構築時には、元のバージョンを正確に把握し、設定を適切に行うことが不可欠ということを学びました。

また今まで環境構築等は行ってたことがなかったので、あまり触れられていなかったDockerの挙動やインフラ周りについても知見を深めることができてよかったです。

余談

Docker Desktopのバージョンアップにより、Dockerがv1からv2に変わったため、docker-composeコマンドがdocker composeに変化したことも少し躓いたので念の為記述しておきます。

無料相談・お問い合わせ Web制作・システム開発に関する
ご相談はこちらよりご連絡ください。

お客様のビジネスの成長と成功を支えるパートナーとして、
どんなご相談でもお待ちしております。お気軽にお問い合わせください。