如何从Node容器访问外部数据库?

编程入门 行业动态 更新时间:2024-10-05 21:18:58

如何从Node<a href=https://www.elefans.com/category/jswz/34/1771431.html style=容器访问外部数据库?"/>

如何从Node容器访问外部数据库?

我有一个nextjs应用,该应用应该连接到外部MySQL数据库(不是来自同一docker网络的一个)。在本地运行该应用程序时,它在连接到数据库时可以正常运行,但是在Docker容器中运行它时,即使环境变量在容器中配置正确,它仍会继续尝试连接到127.0.0.1。

Error: Error: connect ECONNREFUSED 127.0.0.1:3306
nextjs_1  |     at connect (/opt/app/node_modules/serverless-mysql/index.js:80:15)

Dockerfile配置:

FROM node:alpine

RUN mkdir -p /opt/app
RUN apk add --no-cache libc6-compat
ENV NODE_ENV production
ENV PORT 3000
EXPOSE 3000

WORKDIR /opt/app

COPY package.json /opt/app
COPY package-lock.json /opt/app

RUN npm install --no-optional

COPY . /opt/app

RUN npm run build

RUN npx next telemetry disable

RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

USER nextjs

CMD [ "npm", "start" ]

连接代码:

const mysql = require('serverless-mysql')

const db = mysql({
  config: {
    host: process.env.MYSQL_HOST,
    database: process.env.MYSQL_DATABASE,
    user: process.env.MYSQL_USER,
    password: process.env.MYSQL_PASSWORD,
  },
})

exports.query = async (query) => {
  try {
    const results = await db.query(query)
    await db.end()
    return results
  } catch (error) {
    return { error }
  }
}

有什么想法吗?

我有一个nextjs应用程序,该应用程序应该连接到外部MySQL数据库(不是来自同一docker网络的一个)。在本地运行应用程序时,它在连接到数据库时可以正常工作,但是在...

回答如下:

发现了问题。由于某些原因,它与在容器中使用特定用户有关,特别是这一部分:

更多推荐

如何从Node容器访问外部数据库?

本文发布于:2024-05-07 04:56:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754346.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:容器   数据库   Node

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!