首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >瓶,反应和码头:非零代码

瓶,反应和码头:非零代码
EN

Stack Overflow用户
提问于 2020-08-09 06:06:04
回答 2查看 333关注 0票数 0

我正在一台普通的Windows机器上尝试遵循这里的瓶/反应教程。

在Windows 10上,没有考虑Docker,我有教程工作。

在Windows 10下的码头系统(基于ubuntu的容器和码头组合)下,我没有:

  • React服务器在码头下工作。
  • 烧瓶服务器无法成功构建。

用于Flask服务器的Dockerfile是:

代码语言:javascript
复制
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停止。

欢迎任何建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-09 06:12:25

我相信当你运行你的对接时,烧瓶找不到你的应用程序(尤其是当码头构建试图运行它的时候)。如果您只想使用停靠器来运行您的应用程序通过该对接,使用CMD在码头文件,因此,当运行对接图像,它将启动您的瓶应用程序的第一件事。

票数 1
EN

Stack Overflow用户

发布于 2020-08-09 10:55:43

在您显示的Dockerfile中有两个明显的问题。

每个RUN命令都在一个干净的环境中运行,从图像的最后一个已知状态开始。当RUN命令退出时,不保留当前目录(以及环境变量值)之类的设置。因此,RUN cd ...从旧目录启动RUN命令,更改到新目录,然后不记得这一点;下面的RUN命令再次从旧目录开始。您需要使用WORKDIR指令来实际更改目录。

RUN命令也在构建阶段运行。它们不会发布网络端口或访问数据库;在多容器组合设置中,它们无法连接到其他容器。您可能希望将Flask应用程序作为主容器CMD运行。

因此,您可以更新您的Dockerfile如下:

代码语言:javascript
复制
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这样的常规工具时。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63323027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档