需要从容器访问在端口中运行的neo4j数据库; webservice在容器中,而neo4j独立运行

时间:2019-04-11 07:04:13

标签: docker web neo4j

neo4j托管在云中,并在端口11004中运行,已准备好部署应用程序的另一个容器,并且暴露了端口5000,以便可以通过浏览器访问该应用程序。 问题是,容器内的应用程序需要从正在运行的数据库中检索数据。 该怎么办?

在Web应用程序中:

driver = GraphDatabase.driver("bolt://localhost:11004", auth=("neo4j","1234"))

也尝试使用http端口,

FROM python:3.7
# Mount current directory to /app in the container image
VOLUME ./:app/
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
# Copy local directory to /app in container
# Dont use COPY * /app/ , * will lead to lose of folder structure in /app
COPY . /app/

# Change WORKDIR
WORKDIR /app

# Install dependencies
# use --proxy http://<proxy host>:port if you have proxy
RUN pip install -r requirements.txt

# In Docker, the containers themselves can have applications running on ports. To access these applications, we need to expose the containers internal port and bind the exposed port to a specified port on the host.
# Expose port and run the application when the container is started
RUN echo
ENTRYPOINT ["python"]
CMD ["app.py"]
EXPOSE 5000

我需要应用程序通过neo4j端口提供的11004数据库获取数据,并通过5000获取网页的结果

2 个答案:

答案 0 :(得分:1)

第一个容器中托管的应用程序正在自身内搜索neo4j(在容器内调用neo4j),但neo4j托管在另一个容器上,因此它将无法工作,因为第一个容器中没有托管neo4j。

您需要将neo4j hosted container链接到application container

您可以阅读有关链接容器的更多信息 here

答案 1 :(得分:0)

要运行该映像并获取容器以访问在主机上运行的neo4j(默认情况下,网络设置为桥接,必须将其更改为主机才能访问在主机系统中运行的neo4j)

  

Sudo docker run -p 5000:5000 --network = host