首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Server和nodejs与坞-组合连接起来

将Server和nodejs与坞-组合连接起来
EN

Stack Overflow用户
提问于 2022-03-26 17:34:15
回答 1查看 938关注 0票数 1

我有船坞-合成人.

代码语言:javascript
运行
复制
version: "3.7"
services:
  app:
    build: .
    ports:
      - 3000:3000
    working_dir: /app
    volumes:
      - ./:/app
    depends_on:
      - db
  db:
    image: "mcr.microsoft.com/mssql/server:2019-latest"
    ports:
      - 1433:1433
    environment:
      SA_PASSWORD: "Thieu@098551298"
      ACCEPT_EULA: "Y"
    volumes:
      - mssql-data:/var/opt/mssql
volumes:
  mssql-data:

文件Dockerfile:

代码语言:javascript
运行
复制
FROM node:12-alpine
ENV NODE_ENV=production

WORKDIR /app

COPY ["package.json", "package-lock.json*", "./"]

RUN npm install --production

COPY . .

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

文件server.js:

代码语言:javascript
运行
复制
var express = require("express");
var app = express();
var { ExecuteSQL } = require("./sql");

app.get("/", async (req, res) => {
    var s = await ExecuteSQL("select *from post");
    res.send(s.recordset);
});

app.listen(3000, () => console.log("listening on port 3000"));

和sql.js:

代码语言:javascript
运行
复制
var sql = require("mssql");

var config = {
    user: "sa",
    password: "Thieu@098551298",
    server: "localhost",
    database: "blog",
    options: {
        enableArithAbort: true,
        trustServerCertificate: true,
    },
};

function ExecuteSQL(query) {
    return new Promise((resolve, reject) => {
        sql.connect(config, (err, db) => {
            if (err) reject(err);
            var request = new sql.Request();
            request.query(query, (err, db) => {
                if (err) reject(err);
                resolve(db);
            });
        });
    });
}
async function z() {
    var z = await ExecuteSQL("select *from post");
    console.log(z.recordsets);
}
z();
module.exports = {
    ExecuteSQL: ExecuteSQL,
};

步骤1:我运行这个cmd: docker-构建-d (将运行两个容器db和app)

步骤2:打开浏览器转到http://localhost:3000/ (我的目标是当我从server.js文件中选择*from post时浏览器将显示记录集),但是它会抛出错误:

UnhandledPromiseRejectionWarning: ConnectionError:未能连接到本地主机:1433年-无法连接(序列)

但是当我运行cmd: node时,它可以连接到容器中的Server并显示数据,因为我有在sql.js中进行测试的功能

代码语言:javascript
运行
复制
async function z() {
    var z = await ExecuteSQL("select *from post");
    console.log(z.recordsets);
}
z();

数据显示:

代码语言:javascript
运行
复制
[
  [
    {
      id: 1,
      title: 'How to learn docker',
      content: ' qjweqwn ejqwne qwne nqwje nqwjen qjwne ojqwne jqwn'
    },
    {
      id: 2,
      title: 'How to learn english',
      content: ' qwen qwen qjen qw'
    }
  ]
]

我已经提供了必要的信息,那么应用程序容器有任何方法连接到db容器并获取数据吗?也许我应该在docker-come.yml文件中编辑更多的内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-27 13:35:07

你给错了服务器地址。别忘了码头里的“本地主机”意味着码头里面的意思。

若要修复此配置服务器地址"db“,请执行以下操作

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71630352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档