所以我试图在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"
答案 0 :(得分:0)
入口点将在WORKDIR
中运行。您的文件app.py不在/app
上,而是WORKDIR
,它位于/app/test
。您必须发送entrypoint命令的路径,因为他在当前目录中找不到该文件:
ENTRYPOINT /bin/bash -c "source bin/activate python test/app.py"