ホームページ  >  に質問  >  本文

Dockerコンテナ上でmysqlサーバーを起動できません

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 に変更する必要があります。その結果、データベースへの接続に問題があることを示す次のエラーが表示されます=>

リーリー

本当に行き詰まってしまいました。

P粉021854777P粉021854777183日前2511

全員に返信(1)返信します

  • P粉541796322

    P粉5417963222024-04-01 12:22:14

    以下に示すように docker-compose.yml ファイルを変更することですべての問題が解決されました =>

    リーリー

    これは私の Dockerfile =>

    リーリー

    返事
    0
  • キャンセル返事