我正在一台普通的Windows机器上尝试遵循这里的瓶/反应教程。
在Windows 10上,没有考虑Docker,我有教程工作。
在Windows 10下的码头系统(基于ubuntu的容器和码头组合)下,我没有:
用于Flask服务器的Dockerfile是:
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y software-properties-common
RUN add-apt-repository universe
RUN apt-get update && apt-get install -y python3-pip yarn
RUN pip3 install flask
#RUN pip3 install venv
RUN mkdir -p /app
WORKDIR /app
COPY . /app
#RUN python3 -m venv venv
RUN cd api/venv/Scripts
RUN flask run --no-debugger这在最后一行失败了:
命令'/bin/sh -c烧瓶运行-无调试器‘返回一个非零代码:1
请注意,我发现自己处于一个不值得羡慕的位置,试图同时使用/教给自己所有的Docker、venv、react和烧瓶。venv命令被注释掉了,因为我甚至不确定venv在码头上是否有意义(但是我知道什么呢?)也是因为pip3 install venv命令使用non-zero code:2停止。
欢迎任何建议。
发布于 2020-08-09 06:12:25
我相信当你运行你的对接时,烧瓶找不到你的应用程序(尤其是当码头构建试图运行它的时候)。如果您只想使用停靠器来运行您的应用程序通过该对接,使用CMD在码头文件,因此,当运行对接图像,它将启动您的瓶应用程序的第一件事。
发布于 2020-08-09 10:55:43
在您显示的Dockerfile中有两个明显的问题。
每个RUN命令都在一个干净的环境中运行,从图像的最后一个已知状态开始。当RUN命令退出时,不保留当前目录(以及环境变量值)之类的设置。因此,RUN cd ...从旧目录启动RUN命令,更改到新目录,然后不记得这一点;下面的RUN命令再次从旧目录开始。您需要使用WORKDIR指令来实际更改目录。
RUN命令也在构建阶段运行。它们不会发布网络端口或访问数据库;在多容器组合设置中,它们无法连接到其他容器。您可能希望将Flask应用程序作为主容器CMD运行。
因此,您可以更新您的Dockerfile如下:
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y software-properties-common
RUN add-apt-repository universe
RUN apt-get update && apt-get install -y python3-pip yarn
WORKDIR /app # Creates the directory as well
COPY requirements.txt ./ # Includes "flask"
RUN pip install -r requirements.txt
COPY . ./
WORKDIR /app/api/venv/Scripts # Not `RUN cd ...`
CMD flask run --no-debugger # Not `RUN ...`实际上,在Docker中不使用虚拟环境是很常见的;Docker映像与任何其他Python安装都是隔离的,所以使用"system“Python包树是安全的。(我对其中的venv目录有点怀疑,因为虚拟环境不能很好地移植到其他设置中。)
请注意,我发现自己处于一个不值得羡慕的位置,试图同时使用/教给自己所有的Docker、venv、react和烧瓶。
让码头工人再待一天。这是不必要的,特别是在应用程序的开发阶段。如果你读了这么多问题,就会有很多问题试图使Docker像一个本地开发环境一样行事,而实际上它并不是为它而设计的。在本地安装完成工作所需的工具没有什么问题,特别是当它们是Python和Node这样的常规工具时。
https://stackoverflow.com/questions/63323027
复制相似问题