亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Ralat berlaku apabila menggunakan NodeJS untuk menyambung ke MySQL dalam Docker
P粉722521204
P粉722521204 2024-04-06 12:07:19
0
1
871

Saya mencipta pelayan backend NodeJS yang disambungkan ke MySQL. Menggunakan Docker, saya mencipta imej untuk menjalankan fail nodeJS dan package.json saya (yang termasuk MySQL) menggunakan arahan berikut. Inilah fail Docker saya:

FROM node

WORKDIR /app

COPY package.json .

RUN npm install

COPY . /app

EXPOSE 3000

CMD ["node", "app.js"]

Saya mempunyai fail lain untuk membuat sambungan ke MySQL menggunakan NodeJS:

const mysql = require("mysql");

const con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "ilovestackoverflow",
  database: "db830",
  port: "3306"
});

con.connect(function (err, rows) {
  if (err) throw err;
  console.log("Database is connected!");
});

module.exports = con;

Saya cuba menjalankan Dockers (docker run -p 3000:3000 help:help) tetapi mendapat ralat berikut (tidak tahu cara membetulkannya, tolong bantu!!):

Server is listening on Port: 3000
/app/config/database.js:12
  if (err) throw err;
           ^

Error: connect ECONNREFUSED 127.0.0.1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1247:16)
    --------------------
    at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/app/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/app/node_modules/mysql/lib/Connection.js:116:18)
    at Object.<anonymous> (/app/config/database.js:11:5)
    at Module._compile (node:internal/modules/cjs/loader:1120:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
    at Module.load (node:internal/modules/cjs/loader:998:32)
    at Module._load (node:internal/modules/cjs/loader:839:12)
    at Module.require (node:internal/modules/cjs/loader:1022:19)
    at require (node:internal/modules/cjs/helpers:102:18) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 3306,
  fatal: true
}

P粉722521204
P粉722521204

membalas semua(1)
P粉787806024

Dalam persekitaran berbilang bekas, terdapat berbilang rangkaian dalam bekas docker, dan setiap bekas mempunyai ruang nama rangkaiannya sendiri. Apabila anda perlu mengakses bekas Docker lain, rangkaian dalam Docker dilakukan melalui nama perkhidmatan. Dalam tetapan docker-compose, anda akan merujuk nama perkhidmatan. Apabila menggunakan bekas docker biasa, ia lebih sukar. Anda perlukan

  1. Buat rangkaian Docker

docker網(wǎng)絡(luò)創(chuàng)建awesomeNetwork

  1. Sertai bekas pertama ke rangkaian

docker網(wǎng)絡(luò)連接nodebackend AwesomeNetwork

  1. Sertai bekas kedua ke rangkaian

docker網(wǎng)絡(luò)連接db AwesomeNetwork

Anda kini boleh merujuk bekas lain dalam rangkaian kontena menggunakan nama db/nodebackend secara individu.


Dalam dev/local docker-compose 環(huán)境中,我強(qiáng)烈建議使用 docker-compose dan tulis manifes karang anda. Kemudian anda tidak perlu membuat rangkaian kerana ia akan dibuat untuk anda setiap masa. Persediaan kelihatan seperti ini

# docker-compose.yml
version: '3.8'
services:
  nodeBackend:
    build: .
    context: ./Path
    dockerfile: Dockerfile
    ports:
     - "3000:3000"
  db:
    image: mysql
    ports:
      - 3306:3306
    volumes:
      - :/var/lib/mysql      # select a path to persist your data
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_USER=
      - MYSQL_DATABASE=

Kini anda boleh menggunakan nama hos db 連接到節(jié)點(diǎn)應(yīng)用程序中的 db

const con = mysql.createConnection({
  host: "db",
  user: "root",
  password: "ilovestackoverflow",
  database: "db830",
  port: "3306"
});

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan