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
获取网页的结果
答案 0 :(得分:1)
第一个容器中托管的应用程序正在自身内搜索neo4j(在容器内调用neo4j),但neo4j托管在另一个容器上,因此它将无法工作,因为第一个容器中没有托管neo4j。>
您需要将neo4j hosted container
链接到application container
。
您可以阅读有关链接容器的更多信息 here
答案 1 :(得分:0)
要运行该映像并获取容器以访问在主机上运行的neo4j(默认情况下,网络设置为桥接,必须将其更改为主机才能访问在主机系统中运行的neo4j)
Sudo docker run -p 5000:5000 --network = host