Como conectar o aplicativo Node.js ao banco de dados quando eles estão sendo executados em contêineres Docker separados?
Eu tenho esses contêineres em execução:
Posso visitar o aplicativo do nó emlocalhost:49160
e banco de dados emlocalhost:7474
como esperado.
No entanto, o aplicativo do nó não parece realmente conectar-se ao banco de dados. Eu recebo esse erro quando tento:
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)
Isso normalmente significa que não é possível encontrar o banco de dados nesse host: port.
Mais uma vez, eu posso visitar127.0.0.1:7474
e ver claramente que o banco de dados está em execução.
Eu também tentei me conectar a0.0.0.0:7474
, mas isso também não funcionou.
Não há problemas quando executo o aplicativo do nó localmente + banco de dados no contêiner do docker, mas esse problema ocorre quando também executo o aplicativo do nó em um contêiner do docker.
Em que host e porta o banco de dados deve estar disponível (em que devo me conectar?) E o que provavelmente estou ausente ou fazendo de errado?
Dockerfile para node-app
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" ]
docker neo4j run cmd
docker run -d -e NEO4J_AUTH=none \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
--volume=$HOME/neo4j/logs:/logs \
--volume=$HOME/neo4j/conf:/conf \
--volume=$HOME/neo4j/plugins:/plugins \
neo4j:3.1.4