Python 3.x 运行docker compose时出错
我试图通过docker compose运行我的python代码。它不是flask应用程序,因此我没有在yml文件中提供端口号。这是我的docker-compose.yml文件:Python 3.x 运行docker compose时出错,python-3.x,docker,docker-compose,dockerfile,Python 3.x,Docker,Docker Compose,Dockerfile,我试图通过docker compose运行我的python代码。它不是flask应用程序,因此我没有在yml文件中提供端口号。这是我的docker-compose.yml文件: version: '3' services: main: build: . image: ddn4 environment: - neo4j_uri=bolt://54.209.5.141:7687 - neo4j_username=neo4j -
version: '3'
services:
main:
build: .
image: ddn4
environment:
- neo4j_uri=bolt://54.209.5.141:7687
- neo4j_username=neo4j
- password=provis234
- blob_conn_string=httpsxxxx
py是我的python代码。跑步后
docker组合构建
,我得到一个成功建立的形象。另外,在检查使用后
docker图像
,我看到映像ddn4已成功构建。但是一跑
码头工人整理
,我得到以下错误:
main|u 1 |错误!!!!文件异常:
main_1 |“function”对象不可下标
main_1|错误!!!!:
main_1 |'NoneType'对象没有属性'columns'dd-n4_main_1已退出,代码为0
dd-n4是我的dockerfile、requirements.txt、python代码和docker-compose.yml文件的位置
以下是导致错误的变量的python代码:
def neo4jconn():
"""
This code is to create a connection string for connecting to Neo4j
"""
try:
neo_conn = Graph(os.getenv['neo4j_uri'], user=os.getenv['neo4j_username'], password=os.getenv['password'])
return neo_conn
except Exception as ex:
print('Error !!!!:')
print(ex)
不能同时使用build和image语句。
如果使用build,将自动使用生成的映像 尝试使用docker compose up运行docker-compose.yml文件,如果要重新构建它,请添加--build标志,分离模式添加-d,如下所示:
docker-compose up -d --build
您可以将所有环境变量传递到.env文件,并另外安装:
并将其传递给docker compose:
youre_service:
image: image:1.7
container_name: container
env_file:
- .env
我可以通过更新python代码以使用os.getenv()而不是os.getenv[]来解决这个问题。谢谢@David Maze您应该只使用
docker compose up
来运行docker-compose.yml文件,如果您想重新构建它添加--build
flas,它看起来像:docker compose up--build
。它在本地工作成功吗?您的docker文件是什么?我的docker文件在本地工作成功。我认为问题在于我在python上使用的环境变量。我在使用docker compose-up时遇到了同样的错误——您可以在宿主Python环境中运行此代码吗?(我通常期望os.getenv()
是一个函数,os.environ[]
是一个字典,但您应该看到在虚拟环境中运行相同代码时出现相同的错误,而不涉及Docker。)我之所以会出现这种情况,是因为引用了python环境变量,而不是因为Docker compose命令。你能解释一下吗?参考资料?你的意思是你的容器中没有环境变量吗?我已经在我的yaml文件中添加了环境变量,你可以在上面看到。我不确定是什么原因导致了错误。描述了如果您同时拥有构建:
和图像:
;在某些情况下,这是一种合理的组合。
youre_service:
image: image:1.7
container_name: container
env_file:
- .env