国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Une erreur se produit lors de l'utilisation de NodeJS pour se connecter à MySQL dans Docker
P粉722521204
P粉722521204 2024-04-06 12:07:19
0
1
881

J'ai créé un serveur backend NodeJS connecté à MySQL. à l'aide de Docker, j'ai créé une image pour exécuter mes fichiers nodeJS et package.json (qui incluent MySQL) à l'aide des commandes suivantes. Voici mon Dockerfile?:

FROM node

WORKDIR /app

COPY package.json .

RUN npm install

COPY . /app

EXPOSE 3000

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

J'ai un autre fichier pour créer une connexion à MySQL en utilisant 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;

J'ai essayé d'exécuter Dockers (docker run -p 3000:3000 help:help) mais j'ai obtenu l'erreur suivante (je ne sais pas comment y remédier, aidez s'il vous pla?t !!) :

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

répondre à tous(1)
P粉787806024

Dans un environnement multi-conteneurs, il existe plusieurs réseaux dans les conteneurs Docker, et chaque conteneur possède son propre espace de noms réseau. Lorsque vous devez accéder à d'autres conteneurs Docker, la mise en réseau dans Docker se fait via les noms de services. Dans les paramètres de docker-compose, vous référencerez le nom du service. Lorsque vous utilisez des conteneurs Docker classiques, c'est un peu plus difficile. Vous avez besoin

  1. Créer un réseau Docker

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

  1. Rejoignez le premier conteneur au réseau

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

  1. Rejoignez le deuxième conteneur au réseau

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

Vous pouvez désormais faire référence à un autre conteneur au sein d'un réseau de conteneurs en utilisant le nom db/nodebackend individuellement.


Dans dev/local docker-compose 環(huán)境中,我強(qiáng)烈建議使用 docker-compose et rédigez votre manifeste de composition. Vous n’avez alors pas besoin de créer le réseau car il sera créé pour vous à chaque fois. La configuration ressemble à ceci

# 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=

Vous pouvez maintenant utiliser le nom d'h?te db 連接到節(jié)點(diǎn)應(yīng)用程序中的 db

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal