在docker容器内的virtualenv上运行烧瓶app

时间:2017-10-31 14:13:36

标签: python ubuntu docker flask dockerfile

所以我试图在docker容器上的virtualenv中运行一个烧瓶应用程序。

我的Dockerfile看起来像这样

FROM ubuntu:latest
MAINTAINER Gabriel Togni "togni@nmmi.edu"
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential python-virtualenv
COPY . /app
WORKDIR /app

RUN virtualenv test

WORKDIR test

RUN /bin/bash -c "source test/bin/activate; pip install -r requirements.txt"

ENTRYPOINT /bin/bash -c "source test/bin/activate; python app.py"

它构建时没有错误,它运行时没有错误,但它无法正常工作。

我的requirements.txt文件只有Flask==0.12.2而我的app.py看起来像这样

from flask import Flask
import sys
app = Flask(__name__)

@app.route("/")
def hello():
        if getattr(sys, "real_prefix", None) is not None:
                return "Maybe in a virtualenv"
        else:
                return "Probably not in a virtualenv"

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

我正在尝试在Ubuntu Server 16.04.3 LTS上执行此操作

修改 -

我将;添加到

上的代码后问题得以解决
RUN /bin/bash -c "source test/bin/activate; pip install -r requirements.txt"

ENTRYPOINT /bin/bash -c "source test/bin/activate; python app.py"

1 个答案:

答案 0 :(得分:0)

入口点将在WORKDIR中运行。您的文件app.py不在/app上,而是WORKDIR,它位于/app/test。您必须发送entrypoint命令的路径,因为他在当前目录中找不到该文件:

ENTRYPOINT /bin/bash -c "source bin/activate python test/app.py"