gpt4 book ai didi

javascript - Docker容器nodejs连接外部mysql失败

转载 作者:行者123 更新时间:2023-11-29 23:27:52 24 4
gpt4 key购买 nike

我的nodejs应用程序正在外部连接到mysql,如果我以交互方式启动一切都很好 docker run -p 49160:8080 -t -i <image> ,然后运行 ​​nodejs /src/server.js手动。但是,当我从守护进程 docker run -p 49160:8080 -d <image> 开始时,就会无法连接外部mysql。

尝试过docker start <container>然后docker exec <container> nodejs /src/server.js ,同样的错误。

尝试过 docker start <container> , docker attach <container> ,运行nodejs /src/server.js ,然后就可以了。

Dockerfile:

FROM ubuntu

COPY . /src

RUN apt-get install nodejs
RUN apt-get install npm
RUN cd /src; npm install
EXPOSE 8080
CMD ["nodejs","/src/server.js"]

/src/server.js:

var express = require('express');
var mysql = require('mysql'),
myconnection = require('express-myconnection');

...

app.use(myconnection(mysql, {
...
},'request'));

...

app.get('/',function(req,res) {
req.getConnection(function(err,connection) {
if(err)
// giving out err here, fail to connect

更新:

我发现原因实际上是nodejs /src/server.jscd /src; nodejs server.js前者会给我连接错误,后者工作正常

所以docker run -p 49160:8080 -d <image> /bin/sh -c "cd /src; nodejs server.js"确实有效

马克,你有什么想法吗?仍需要 ifconfig 的输出?谢谢

最佳答案

好的,看来问题出在您启动命令的目录上。让我们尝试将其添加到 Dockerfile 中的 CMD 命令之前:

 WORKDIR /src

PS 不,谢谢,不再需要 ifconfig

关于javascript - Docker容器nodejs连接外部mysql失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26815541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com