Итак, я пытаюсь запустить фляжное приложение внутри virtualenv в контейнере докеров.
Мой Dockerfile выглядит так
FROM ubuntu:latest
MAINTAINER Gabriel Togni "[email protected]"
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"
WORKDIR
. Первый —/app
, а второй —test
. Следовательно,entrypoint
будет запускаться наWORKDIR test
31.10.2017