Как запустить бутылочное приложение как docker-контейнер? - PullRequest
0 голосов
/ 17 июня 2019

Я делаю bottle-framework-application, оно отлично работает на localhost. Я использую virtualenv.

Тогда я строю контейнер докера. Мой Dockerfile:

FROM ubuntu
COPY . .
RUN /bin/bash -c "source venv/bin/activate"
ENTRYPOINT /bin/bash -c "python3 index.py"

Biuld-процесс в порядке:

(venv) kalinin@md ~/python/bottler $ docker build -t bottler .
Sending build context to Docker daemon  26.07MB
Step 1/4 : FROM ubuntu
 ---> 7698f282e524
Step 2/4 : COPY . .
 ---> 9e182c969051
Step 3/4 : RUN /bin/bash -c "source venv/bin/activate"
 ---> Running in 2022e2fa7600
Removing intermediate container 2022e2fa7600
 ---> 16209d249539
Step 4/4 : ENTRYPOINT python3 index.py
 ---> Running in 84594de70d72
Removing intermediate container 84594de70d72
 ---> d5057555ab1a
Successfully built d5057555ab1a
Successfully tagged bottler:latest

После сборки я пытаюсь запустить контейнер:

docker run -i -t --rm -p 8000:8000 bottler

Но получите сообщение об ошибке:

/bin/bash: python3: command not found

Пожалуйста, помогите мне запустить приложение. После запуска мне нужно увидеть приложение в браузере.

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Измените Dockerfile на

FROM ubuntu
COPY . .
RUN apt-get update
RUN apt-get -y install python3
RUN apt-get -y install python3-pip
RUN pip install bottle
RUN /bin/bash -c "source venv/bin/activate"
ENTRYPOINT /bin/bash -c "python3 index.py"

Попробуйте и дайте мне знать.

0 голосов
/ 17 июня 2019

Прежде всего, я бы предложил вам использовать одно из образов Python https://hub.docker.com/_/python, поскольку вы используете образ Ubuntu, который, вероятно, не имеет предварительно установленного Python.

Во-вторых, я бы предложил вам определить ENTRYPOINTкак отдельная команда / исполняемый файл - в вашем случае python

ENTRYPOINT ["python"]

и затем добавьте путь к файлу .py в определении CMD

CMD ["index.py"]

Проблема в вашем случае заключается в том, что в образе ubuntu исполняемый файл python не найден в $ PATH, поскольку он предварительно не установлен.Либо вы должны установить Python поверх образа Ubuntu, либо просто использовать уже существующий образ Python из Docker Hub

...