こんにちは。Omitナカヤマです。
dockerの環境構築で躓いたので記事にまとめました。
(教えてもらいながらなんとか原因が分かりましたが、1日くらい費やしてしまいました、、、)
こちらの記事が似た様な内容で躓いていらっしゃる方の参考になれば幸いです。
別のDocker環境を構築する際に、既存で開発しているDocker環境を誤って削除してしまったため、再度Docker環境を構築する必要が生じました。
docker環境含むソースコードはGitHubで管理されていたので、今まで稼働していた環境を構築するのは容易だと思っていましたが、MySQLのコンテナが正常に起動しない不具合に直面しました。
MySQLのコンテナを起動しようとした際に次のエラーが発生しました。
bash: line 1: /entrypoint.sh: No such file or directory
・entrypoint.sh
ファイルの作成
→サーバー内で実行されるファイルのため、ローカルで生成しても意味がありませんでした。
・Docker Desktopのアップデート
→状況は変わりませんでした。
・Dockerでダウンロードしているイメージのバージョン情報を確認
→元々使用していたバージョン(8.0)と異なるバージョン(8.4)で稼働していました。
(こちらが原因でentrypoint.sh
が正常に実行できない状態にありました)
-docker-compose.yml
の設定-
-Docker Imageの詳細確認-
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制作・システム開発に関する
ご相談はこちらよりご連絡ください。
お客様のビジネスの成長と成功を支えるパートナーとして、
どんなご相談でもお待ちしております。お気軽にお問い合わせください。