Python 3.x docker compose can';我找不到文件

Python 3.x docker compose can';我找不到文件,python-3.x,docker,docker-compose,Python 3.x,Docker,Docker Compose,我已经创建了下面的docker文件,目的是在docker compose中运行它 FROM python:3.7.5-slim WORKDIR /usr/src/app RUN python -m pip install boto3 COPY test_cf_create_or_update.py . ENTRYPOINT ["python3"] CMD [@] 现在,在构建之后,当我运行它时,我得到了预期的结果 docker build -t test . docker run -it --

我已经创建了下面的docker文件,目的是在docker compose中运行它

FROM python:3.7.5-slim
WORKDIR /usr/src/app
RUN python -m pip install boto3
COPY test_cf_create_or_update.py .
ENTRYPOINT ["python3"]
CMD [@]
现在,在构建之后,当我运行它时,我得到了预期的结果

docker build -t test .
docker run -it --rm test  test_cf_create_or_update.py
然而,如果我真的想通过docker compose重新创建相同的内容,它会说

setup-application_1  | python3: can't open file '/usr/src/app/test_cf_create_or_update.py': [Errno 2] No such file or directory
localstack_setup-application_1 exited with code 2
docker compose的示例如下所示:

setup-application:
    build: .
    volumes:
      - /tmp/localstack/application:/usr/src/app
    environment:
      - AWS_ACCESS_KEY_ID=dummyaccess
      - AWS_SECRET_ACCESS_KEY=dummysecret
      - AWS_DEFAULT_REGION=eu-west-1
    entrypoint: python3
    command: /usr/src/app/test_cf_create_or_update.py
    networks:
      - my_localstack_network
    depends_on:
      - localstack
在我做错的地方,有人能帮我吗?

两种解决方案:

docker compose
中删除
volume
,然后

FROM python:3.7.5-slim
COPY test_cf_create_or_update.py .
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]
FROM python:3.7.5-slim
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]
或者将
volume
保存在
docker compose

FROM python:3.7.5-slim
COPY test_cf_create_or_update.py .
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]
FROM python:3.7.5-slim
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]
确保您的
test\cf\u create\u或
位于
/tmp/localstack/application
文件夹中。

两种解决方案:

docker compose
中删除
volume
,然后

FROM python:3.7.5-slim
COPY test_cf_create_or_update.py .
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]
FROM python:3.7.5-slim
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]
或者将
volume
保存在
docker compose

FROM python:3.7.5-slim
COPY test_cf_create_or_update.py .
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]
FROM python:3.7.5-slim
WORKDIR /usr/src/app
RUN python -m pip install boto3
ENTRYPOINT ["python3"]
CMD [@]

确保您的
test\cf\u create\u或
位于
/tmp/localstack/application
文件夹中。

您的docker文件中的工作目录已经是usr/src/app。因此,当docker compose文件运行时,您应该已经在该目录中,并且您的命令应该是test\u cf\u create\u或\u update.py。(注意,由于您有一个映射到usr/src/app的卷,主机目录(/tmp/localstack/application)应该包含test\u cf\u create\u或\u update.py)是的,您说对了,我的卷就是问题所在。我映射到另一个位置。谢谢,这就解决了问题。我建议删除
卷:
设置,这样您就可以实际运行映像中的代码,而不是用其他内容覆盖映像中的
/usr/src/app
目录。您也不需要在
docker compose.yml
文件中重复
entrypoint:
命令:
。(我可能会将它们合并到docker文件中的单个
CMD
)docker文件中的工作目录已经是usr/src/app。因此,当docker compose文件运行时,您应该已经在该目录中,并且您的命令应该是test\u cf\u create\u或\u update.py。(注意,由于您有一个映射到usr/src/app的卷,主机目录(/tmp/localstack/application)应该包含test\u cf\u create\u或\u update.py)是的,您说对了,我的卷就是问题所在。我映射到另一个位置。谢谢,这就解决了问题。我建议删除
卷:
设置,这样您就可以实际运行映像中的代码,而不是用其他内容覆盖映像中的
/usr/src/app
目录。您也不需要在
docker compose.yml
文件中重复
entrypoint:
命令:
。(我可能会在docker文件中将它们组合成一个
CMD
)我从docker compose中删除了卷。@change198好的,你可以先尝试第一种方法。我从docker compose中删除了卷。@change198好的,你可以先尝试第一种方法。