docker python Flask 得到“你想继续吗”然后“执行器失败”

Ray*_*yek 1 python ubuntu flask docker

在 docker 20.10.2(版本 2291f61)中尝试一个简单的python Flask Web 应用程序。

\n

执行以下操作:docker build -t hello-world .开始时没问题(请参见下文),但结束时为:

\n
#6 2.866 After this operation, 305 MB of additional disk space will be used.\n#6 2.866 Do you want to continue? [Y/n] Abort.\n------\nexecutor failed running [/bin/sh -c apt-get install python3-pip]: exit code: 1\n
Run Code Online (Sandbox Code Playgroud)\n

我需要以某种方式回答“是”吗?还有其他解决方法吗?

\n

编辑1: $ docker build -t Flask-tutorial:latest 。# 做同样的事情。

\n

编辑 2:使用 @tentative 的 install -y 想法会更进一步

\n
 > [4/6] RUN apt-get install -y flask:\n#7 0.742 Reading package lists...\n#7 2.103 Building dependency tree...\n#7 2.389 Reading state information...\n#7 2.665 E: Unable to locate package flask\n------\nexecutor failed running [/bin/sh -c apt-get install -y flask]: ex\nit code: 100\n
Run Code Online (Sandbox Code Playgroud)\n

编辑3:这里的代码构建了一个图像。

\n

编辑4:Dockerfile

\n
FROM ubuntu \n\nRUN apt-get update \nRUN apt-get install -y python3-pip\n# add -y to skip the y/n prompt and install\n#RUN apt-get install -y python3-pip flask\nRUN apt-get install -y flask\n\nADD app.py /\nWORKDIR /\n\nEXPOSE 5000\n\nCMD [\xe2\x80\x9cpython3\xe2\x80\x9d,\xe2\x80\x9dapp.py\xe2\x80\x9d]\n
Run Code Online (Sandbox Code Playgroud)\n

编辑 5:新的 docker 文件构建工作。但:

\n
$ docker run -i -t --name frog hello-world\n/bin/sh: 1: [\xe2\x80\x9cpython3\xe2\x80\x9d,\xe2\x80\x9dapp.py\xe2\x80\x9d]: not found\n
Run Code Online (Sandbox Code Playgroud)\n

编辑6:将上面的开盘和收盘报价更改为中性报价。从主机运行时应用程序运行良好。容器得到一个:27.0.0.1拒绝连接。

\n

编辑7:尝试:

\n
docker run -it -p 5000:5000 --name frog hello-world . \n
Run Code Online (Sandbox Code Playgroud)\n

这会导致连接被拒绝(firefox)、空响应(chrome、edge 和 opera)。这是在 Windows 10 上,防御者已关闭。

\n

编辑8:做一个

\n
if __name__ == \'__main__\':\n    app.run(host=\'0.0.0.0\')\n
Run Code Online (Sandbox Code Playgroud)\n

然后一个

\n

卷曲 127.0.0.1:5000 -v

\n

从服务器得到空回复。

\n

编辑9:仅使用: app.run("0.0.0.0" 有效!

\n

原始输出。

\n
   ray@rays8350 /cygdrive/d/ray/docker/flask/myapp\n    $ docker build -t hello-world .\n    [+] Building 4.9s (7/9)\n     => [internal] load build definition from Dockerfile                       0.0s\n     => => transferring dockerfile: 32B                                        0.0s\n     => [internal] load .dockerignore                                          0.0s\n     => => transferring context: 2B                                            0.0s\n     => [internal] load metadata for docker.io/library/ubuntu:latest           1.6s\n     => [1/6] FROM docker.io/library/ubuntu@sha256:703218c0465075f4425e58fac0  0.0s\n     => => resolve docker.io/library/ubuntu@sha256:703218c0465075f4425e58fac0  0.0s\n     => [internal] load build context                                          0.0s\n     => => transferring context: 28B                                           0.0s\n     => CACHED [2/6] RUN apt-get update                                        0.0s\n     => ERROR [3/6] RUN apt-get install python3-pip                            3.2s\n    ------\n     > [3/6] RUN apt-get install python3-pip:\n    #6 0.588 Reading package lists...\n    #6 1.927 Building dependency tree...\n    #6 2.258 Reading state information...\n    #6 2.683 The following additional packages will be installed:\n    #6 2.683   binutils binutils-common binutils-x86-64-linux-gnu build-essential\n    #6 2.683   ca-certificates cpp cpp-9 dirmngr dpkg-dev fakeroot file g++ g++-9 g\n    c gcc-9\n    #6 2.683   gcc-9-base gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client\n    #6 2.683   gpg-wks-server gpgconf gpgsm gpgv libalgorithm-diff-perl\n    #6 2.683   libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libasn1-8\n    heimdal\n    #6 2.683   libassuan0 libatomic1 libbinutils libc-dev-bin libc6 libc6-dev libcc\n    -0\n    #6 2.684   libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libexpat1 libexpat1-\n    ev\n    #6 2.684   libfakeroot libfile-fcntllock-perl libgcc-9-dev libgdbm-compat4 libg\n    bm6\n    #6 2.684   libgomp1 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal\n    #6 2.684   libheimntlm0-heimdal libhx509-5-heimdal libisl22 libitm1 libkrb5-26-\n    eimdal\n    #6 2.684   libksba8 libldap-2.4-2 libldap-common liblocale-gettext-perl liblsan\n    #6 2.684   libmagic-mgc libmagic1 libmpc3 libmpdec2 libmpfr6 libnpth0 libperl5.\n    0\n    #6 2.684   libpython3-dev libpython3-stdlib libpython3.8 libpython3.8-dev\n    #6 2.684   libpython3.8-minimal libpython3.8-stdlib libquadmath0 libreadline8\n    #6 2.685   libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db\n    #6 2.685   libsqlite3-0 libssl1.1 libstdc++-9-dev libtsan0 libubsan1 libwind0-h\n    imdal\n    #6 2.686   linux-libc-dev make manpages manpages-dev mime-support netbase opens\n    l patch\n    #6 2.686   perl perl-modules-5.30 pinentry-curses python-pip-whl python3 python\n    -dev\n    #6 2.686   python3-distutils python3-lib2to3 python3-minimal python3-pkg-resour\n    es\n    #6 2.686   python3-setuptools python3-wheel python3.8 python3.8-dev python3.8-m\n    nimal\n    #6 2.687   readline-common xz-utils zlib1g-dev\n    #6 2.690 Suggested packages:\n    #6 2.690   binutils-doc cpp-doc gcc-9-locales dbus-user-session libpam-systemd\n    #6 2.690   pinentry-gnome3 tor debian-keyring g++-multilib g++-9-multilib gcc-9\n    doc\n    #6 2.690   gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-9-\n    ultilib\n    #6 2.690   parcimonie xloadimage scdaemon glibc-doc locales git bzr gdbm-l10n\n    #6 2.690   libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal\n    #6 2.690   libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql\n    #6 2.690   libstdc++-9-doc make-doc man-browser ed diffutils-doc perl-doc\n    #6 2.690   libterm-readline-gnu-perl | libterm-readline-perl-perl libb-debug-pe\n    l\n    #6 2.690   liblocale-codes-perl pinentry-doc python3-doc python3-tk python3-ven\n    #6 2.690   python-setuptools-doc python3.8-venv python3.8-doc binfmt-support\n    #6 2.690   readline-doc\n    #6 3.070 The following NEW packages will be installed:\n    #6 3.070   binutils binutils-common binutils-x86-64-linux-gnu build-essential\n    #6 3.070   ca-certificates cpp cpp-9 dirmngr dpkg-dev fakeroot file g++ g++-9 g\n    c gcc-9\n    #6 3.070   gcc-9-base gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client\n    #6 3.071   gpg-wks-server gpgconf gpgsm libalgorithm-diff-perl\n    #6 3.071   libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libasn1-8\n    heimdal\n    #6 3.072   libassuan0 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0\n    #6 3.072   libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libexpat1 libexpat1-\n    ev\n    #6 3.073   libfakeroot libfile-fcntllock-perl libgcc-9-dev libgdbm-compat4 libg\n    bm6\n    #6 3.073   libgomp1 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal\n    #6 3.073   libheimntlm0-heimdal libhx509-5-heimdal libisl22 libitm1 libkrb5-26-\n    eimdal\n    #6 3.073   libksba8 libldap-2.4-2 libldap-common liblocale-gettext-perl liblsan\n    #6 3.074   libmagic-mgc libmagic1 libmpc3 libmpdec2 libmpfr6 libnpth0 libperl5.\n    0\n    #6 3.075   libpython3-dev libpython3-stdlib libpython3.8 libpython3.8-dev\n    #6 3.075   libpython3.8-minimal libpython3.8-stdlib libquadmath0 libreadline8\n    #6 3.077   libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db\n    #6 3.077   libsqlite3-0 libssl1.1 libstdc++-9-dev libtsan0 libubsan1 libwind0-h\n    imdal\n    #6 3.077   linux-libc-dev make manpages manpages-dev mime-support netbase opens\n    l patch\n    #6 3.078   perl perl-modules-5.30 pinentry-curses python-pip-whl python3 python\n    -dev\n    #6 3.078   python3-distutils python3-lib2to3 python3-minimal python3-pip\n    #6 3.079   python3-pkg-resources python3-setuptools python3-wheel python3.8\n    #6 3.080   python3.8-dev python3.8-minimal readline-common xz-utils zlib1g-dev\n    #6 3.083 The following packages will be upgraded:\n    #6 3.086   gpgv libc6\n    #6 3.106 2 upgraded, 113 newly installed, 0 to remove and 4 not upgraded.\n    #6 3.106 Need to get 72.4 MB of archives.\n    #6 3.106 After this operation, 305 MB of additional disk space will be used.\n    #6 3.106 Do you want to continue? [Y/n] Abort.\n    ------\n    executor failed running [/bin/sh -c apt-get install python3-pip]: exit code: 1\n    \n    ray@rays8350 /cygdrive/d/ray/docker/flask/myapp\n    $\n
Run Code Online (Sandbox Code Playgroud)\n

ten*_*ive 6

您应该更改RUNDockerfile 中的行,apt-get以使用该-y标志来跳过要求您确认“是”的情况。

本教程中的 Dockerfile 实际上似乎已经过时或有错误。您需要使用pip3now 来安装Flask并在命令-y中包含该标志apt-get。我编辑了教程中的 Dockerfile 并发布在下面:

FROM ubuntu

RUN apt-get update -y && \
    apt-get install -y python3-pip && \
    pip3 install Flask

COPY app.py /

WORKDIR /

EXPOSE 5000

CMD ["python3","app.py"]
Run Code Online (Sandbox Code Playgroud)

编辑要解决此答案中 Windows 上的连接问题,您可以通过更改 Python 应用程序中的 main 函数来解决此问题:

FROM ubuntu

RUN apt-get update -y && \
    apt-get install -y python3-pip && \
    pip3 install Flask

COPY app.py /

WORKDIR /

EXPOSE 5000

CMD ["python3","app.py"]
Run Code Online (Sandbox Code Playgroud)

对此:

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

原因是你需要绑定Flask0.0.0.0而不是容器中的localhost接口,否则,它不会转发到容器之外。修复该问题后,您应该能够localhost:5000在主机上访问该应用程序。