Python 3.x 运行docker compose时出错

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 -

我试图通过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
      - 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