Docker 化したい NestJS アプリケーションがあります。私は docker を初めて使用するので、これを行う必要があります。私の NestJS アプリケーションでは、Typeorm で mysql データベースを使用しています。この mysql 自体は docker イメージから取得したものです。つまり、mysql は私のコンピューターにインストールされていません。
この docker-compose.yml ファイルがあります:
リーリーdocker-compose up -d を実行して、コンピューター上のデータベースを使用できます。現在、Dockerfle を作成しようとしています。
過去 5 時間ほどで多くのことを変更しましたが、要約すると次のようになります:
リーリー上記の Docekerfile でやろうとしていることは、ホスト マシン上に ubuntu イメージを作成し、アプリケーションが mysql で使用できるように、curl、node、mysql をそれぞれインストールすることです。 このイメージは docker build -t my-app でビルドできます。
次に、image docker run my-app を実行すると、次のエラーが表示されます:
リーリーこの問題にどう対処すればいいのかわかりません。
参考までに、これは私の app.module.ts ファイルです
リーリーこのエラーで何が起こっているのでしょうか?この問題はどうすれば解決できますか?ご協力ありがとうございました。
###乾杯###編集: 問題をもう少し理解できたと思うので、NestJS アプリケーションと mysql イメージの両方を起動する docker-compose-yml ファイルを作成しようとしています。まず、dockerfile を =>
に変更しました。 リーリー次に、この docker-compose.yml ファイルを作成しました=>
リーリーbash で sudo docker-compose up を実行すると (sudo を使用しないとアクセス許可拒否エラーが発生します)、次のエラーが表示されます
リーリー私の知る限りでは、データベースに接続できません。私が何を間違えたのでしょうか?この問題はどうすれば解決できますか?
編集 2: コメントに基づいて、さらにいくつかの変更を加えました。これらは私の発見です:
DB_HOST 値は重要ではないようです。
リーリーこの値を任意に変更すると、スクリプトがローカル マシンで実行されます。
これは私の app.module.ts ファイルです =>
リーリーDocker のみがインストールされているマシン上で実行できるようにこのアプリケーションを Docker 化しようとするときは、docker-compose.yml ファイルを =>
のように変更しようとします。 リーリーこれにより、2 つの異なる動作が発生します。 docker-compose up を実行できなくなり、次のエラーが表示されます =>
リーリーFish Terminal を使用しているため、何らかの理由で sudo docker-compose up を実行するには bash に変更する必要があります。その結果、データベースへの接続に問題があることを示す次のエラーが表示されます=>
リーリー本当に行き詰まってしまいました。
以下に示すように docker-compose.yml ファイルを変更することですべての問題が解決されました =>
リーリーこれは私の Dockerfile =>
リーリー