我正在运行这些容器:
我可以按预期访问struct FibLevel {
double retrace38;
double retrace50;
double retrace61;
double extension61;
double extension100;
double extension138;
double extension161;
};
void FibLevel(double price1, double price2,FibLevel &fiblevel)
{
double range = MathAbs(price1-price2);
fiblevel.retrace38 =(price1<price2)?price2-range*0.382:price1+range*0.382;
fiblevel.retrace50 =(price1<price2)?price2-range*0.500:price1+range*0.500;
fiblevel.retrace61 =(price1<price2)?price2-range*0.618:price1+range*0.618;
fiblevel.extension61 =(price1<price2)?price2+range*0.618:price1-range*0.618;
fiblevel.extension100=(price1<price2)?price2+range :price1-range;
fiblevel.extension138=(price1<price2)?price2+range*1.382:price1-range*1.382;
fiblevel.extension161=(price1<price2)?price2+range*1.618:price1-range*1.618;
}
处的节点应用和localhost:49160
处的数据库。
但是,节点应用程序似乎无法实际连接到数据库。我尝试时收到此错误:
localhost:7474
这通常意味着它无法在该主机上找到数据库:port。
同样,我可以访问Error: connect ECONNREFUSED 127.0.0.1:7474
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14)
并清楚地看到数据库正在运行。
我还尝试连接到127.0.0.1:7474
,但这也没有用。
在Docker容器中运行本地节点应用程序+数据库时没有问题,但是当我在docker容器中运行节点应用程序时会出现此问题。
什么主机和端口应该是数据库(我应该连接到什么?),以及我可能错过或做错了什么?
node-app的Dockerfile
0.0.0.0:7474
docker neo4j run cmd
FROM node:boron
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN yarn
# Bundle app source
COPY . /usr/src/app
EXPOSE 8080
CMD [ "yarn", "start" ]
答案 0 :(得分:2)
我正在描述这样做的一种方式,可能还有其他可能的方法,我目前还没有意识到。由于现在不推荐links
,我们可以使用网络将一个容器连接到另一个容器。
首先,我们使用此命令创建网络:
docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw
然后我们通过为我们创建的网络分配一个IP地址来连接mysql容器。是的,我们也指定了网络。此命令执行所需的目的:
docker run -itd --rm \
--network=isolated_nw \
--ip=172.25.3.3 \
--name=mysql \
--volume "$(pwd)/database/:/docker-entrypoint-initdb.d" mysql
现在我们已经运行了mysql容器并连接到我们创建的isolated_nw
。是时候让我们的其他容器连接到同一个网络并访问mysql容器了。在运行容器时添加--network=isolated_nw
标志会将容器添加到网络中。我们将在运行需要访问mysql的其他容器时使用此标志。
现在已经完成了!在这个其他容器内,我们可以访问我们分配的IP地址的mysql容器,即172.25.3.3。可以看到这些事情的实现here。
答案 1 :(得分:-1)
(我还不能使用评论,所以请按照这种方式与您联系。如果有效则会更新)
您是否不应该将容器链接以暴露它们? Docker v17.06 docs州:
如果操作员在默认桥接网络中启动新客户端容器时使用
--link
,则客户端容器可以通过专用网络接口访问公开的端口。如果在Docker网络概述中描述的用户定义网络中启动容器时使用--link
,则它将为要链接的容器提供命名别名。
我也发现这很有用(带我到文档):https://www.digitalocean.com/community/tutorials/how-to-deploy-a-node-js-and-mongodb-application-with-rancher-on-ubuntu-14-04
(阅读后你可以看看Rancher .Docker的岩石)