gpt4 book ai didi

python - Docker容器在运行flask应用程序后立即退出

转载 作者:行者123 更新时间:2023-11-30 22:26:40 24 4
gpt4 key购买 nike

我已经查了很多答案,但无法解决这个问题。请让我知道我可以做什么来运行 docker 容器。

这是我的设置:

我有 Flask 应用程序,它使用 Neo4j docker 镜像作为数据库。当 Neo4j 是 docker 容器并且 Flask 应用程序是本地时,它工作正常。我需要构建我的 Flask 应用程序以使其成为 docker 镜像。最后,我将在 AWS 上部署此应用程序。

我将应用程序制作为 Docker 镜像,但是当我尝试运行时它立即退出。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                                                      NAMES
eb7f66ffdaa2 re "python app.py" 2 hours ago Exited (1) 2 hours ago sad_curie
a9a02c84ef9a re "python app.py" 2 hours ago Exited (1) 2 hours ago re
5b55004697f6 neo4j "/docker-entrypoin..." 2 hours ago Up 2 hours 0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp mystifying_galileo

我的 Dockerfile 如下:

FROM ubuntu:latest
MAINTAINER Shantagouda Bk "shantu24@gmail.com"
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["app.py"]

这是日志中的错误:

Traceback (most recent call last):
File "app.py", line 8, in <module>
driver = GraphDatabase.driver("bolt://localhost:7687", auth=basic_auth("neo4j", "password"))
File "/usr/local/lib/python2.7/dist-packages/neo4j/v1/api.py", line 124, in driver
return driver_class(uri, **config)
File "/usr/local/lib/python2.7/dist-packages/neo4j/v1/direct.py", line 65, in __init__
pool.release(pool.acquire())
File "/usr/local/lib/python2.7/dist-packages/neo4j/v1/direct.py", line 39, in acquire
connection = self.acquire_direct(address) # should always be a resolved address
File "/usr/local/lib/python2.7/dist-packages/neo4j/bolt/connection.py", line 398, in acquire_direct
connection = self.connector(address)
File "/usr/local/lib/python2.7/dist-packages/neo4j/v1/direct.py", line 64, in <lambda>
pool = DirectConnectionPool(lambda a: connect(a, security_plan.ssl_context, **config), self.address)
File "/usr/local/lib/python2.7/dist-packages/neo4j/bolt/connection.py", line 468, in connect
s.connect(address)
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address

请让我知道我缺少什么以及如何运行 Flask 应用程序镜像。

最佳答案

您的应用尝试连接 localhost:7687 上的数据库。

当您的应用程序在主机上 native 运行时,则 localhost = 您的本地计算机,这就是它工作的原因。

但是当你的应用程序运行在 Docker 容器中时,那么 localhost = 应用程序容器,因此它无法在自己的容器环境中找到 DB。

您应该将数据库和应用程序放置在同一网络中,并使用数据库的容器名称而不是本地主机。我建议使用 docker-compose 来完成此任务。

关于python - Docker容器在运行flask应用程序后立即退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167014/

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