gpt4 book ai didi

python - 对于运行 "python myapp.py images/*"的 Flask 应用程序,我应该为 Docker CMD 和 ENTRYPOINT 放置什么

转载 作者:行者123 更新时间:2023-12-02 21:14:31 25 4
gpt4 key购买 nike

我正在尝试使用 Docker 运行 Flask 应用程序。
通常,要执行 Flask 应用程序,我会在终端中运行它:

python myapp.py images/*

我不确定如何将其转换为 Docker CMD 语法(或者我是否需要编辑 ENTRYPOINT)。

这是我的 docker 文件:
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential hdf5-tools
COPY . ~/myapp/
WORKDIR ~/myapp/
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["myapp.py"]

在 requirements.txt 里面:
flask
numpy
h5py
tensorflow
keras

当我运行 docker 镜像时:
person@person:~/Projects/$ docker run -d -p 5001:5000 myapp
19645b69b68284255940467ffe81adf0e32a8027f3a8d882b7c024a10e60de46

docker ps:
Up 24 seconds       0.0.0.0:5001->5000/tcp   hardcore_edison

当我到达 localhost:5001 时,我没有得到任何回应。
我的 CMD 参数有问题吗?

编辑:
新的 Dockerfile:
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential hdf5-tools
COPY . ~/myapp/
WORKDIR ~/myapp/
EXPOSE 5000
RUN pip install -r requirements.txt
CMD ["python myapp.py images/*.jpg "]

使用这个新配置,当我运行时:
docker run -d -p 5001:5000 myapp

我得到:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"python myapp.py images/*.jpg \": stat python myapp.py images/*.jpg : no such file or directory": unknown.

当我运行时:
docker run -d -p 5001:5000 myapp python myapp.py images/*.jpg

我让 Docker 镜像运行,但现在当我转到 localhost:5001 时,它提示连接已重置。

最佳答案

我很高兴你已经解决了这个问题。我只是为那些仍然像你一样对 ENTRYPOINT 有同样困惑的人提出这个答案。和 CMD高管。
在 Dockerfile 中,ENTRYPOINTCMD是两个相似的高管,但他们之间仍然有很大的不同。最重要的(仅在我看来)是 CMD可以被覆盖,但 ENTRYPOINT不是。
为了解释这一点,我可以为你们提供命令打击:docker run -tid --name=container_name image_name [command]正如我们所见,command是可选的,它(如果存在)可以覆盖 CMD在 Dockerfile 中定义。
让我们回到你的问题。您可能有两种方法可以实现您的目的-->

  • ENTRYPOINT ["python"]CMD ["/path/to/myapp.py", "/path/to/images/*.jpg"] .
  • CMD python /path/to/myapp.py /path/to/images/*.jpg .上面的@David Maze 提到了这一点。

  • 想了解第一个,可以拿 CMD作为 ENTRYPOINT 的参数.

    下面是一个简单的例子。

    Dockerfile--> FROM ubuntu:18.04
    ENTRYPOINT ["cat"]
    CMD ["/etc/hosts"]

    构建名为 test-cmd-show 的镜像并从中启动一个容器。 docker run test-cmd-show这将显示 /etc/hosts 中的内容文件。继续... docker run test-cmd-show /etc/resolv.conf这将向我们展示 /etc/resolv.conf 的内容文件。继续... docker run test-cmd-show --help这将显示命令 cat 的帮助信息.

    太棒了,对吧?
    不知何故,我们可以通过这个功能做更多的研究。

    添加相关问题: What's the difference between CMD and ENTRYPOINT ?

    关于python - 对于运行 "python myapp.py images/*"的 Flask 应用程序,我应该为 Docker CMD 和 ENTRYPOINT 放置什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52063964/

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