容器访问外部数据库?"/>
如何从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容器访问外部数据库?
发布评论