Создание контейнера для приложения командной строки Python

Я создал приложение командной строки Python, доступное через PyPi / pip install.

Приложение имеет собственные зависимости.

Чтобы сделать установку менее болезненной для пользователей Windows, я хотел бы создать Dockerized версию из этого приложения командной строки.

Как легко преобразовать setup.py с точкой входа и requirements.txt в приложение командной строки? Есть ли какие-то инструменты для этого, или мне просто написать Dockerfile вручную?

напишите Dockerfile ;-)

Anna Jeanine 23.11.2018 16:31

Почему бы не использовать PyInstaller?

phd 23.11.2018 18:43

официальное руководство Docker по созданию и запуску пользовательских образов очень близок к тому, о чем вы просите.

David Maze 24.11.2018 04:02

@phd Почему бы и нет ... с Docker вам нужно создавать и распространять только один образ. PyInstaller по-прежнему должен будет создавать разные двоичные файлы для каждой платформы.

Mikko Ohtamaa 24.11.2018 13:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
312
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, вам нужно создать Dockerfile и построить на его основе образ. Есть передовые методы создания образа докера, которые вам нужно применить. Существуют также передовые практики для конкретных языков.

Просто чтобы дать вам некоторое представление о процессе:

FROM python:3.7.1-alpine3.8 #base image
ADD . /myapp # add project files
WORKDIR /myapp
RUN apk add dep1 dep2 #put your dependency packages here
RUN pip-3.7 install -r requirements.txt #install pip packages
RUN pip-3.7 install .
CMD myapp -h

Теперь создайте образ и поместите его в публичный реестр:

sudo docker build -t <yourusername>/myapp:0.1 .

пользователи могут просто вытащить изображение и использовать его:

sudo docker run -it myapp:0.1 myapp.py <switches/arguments>

Спасибо. Ваш комментарий относительно "передовых методов работы с конкретным языком" - это то, что я могу посоветовать. Вместо того, чтобы изобретать колесо Python заново.

Mikko Ohtamaa 24.11.2018 13:40

Общее практическое правило - использовать образ alpine и устанавливать только необходимые зависимости, удалять кеш apk, но вы можете найти в Интернете различные источники для python.

Farhad Farahi 24.11.2018 14:05

Еще раз, спасибо. Также вы попадаете в точку, когда говорите, что в Интернете можно найти разные источники - источники «разные». Есть хорошие, плохие и уродливые учебники, и поэтому я обращаюсь к профессиональному совету по StackOverflow, поскольку здесь люди со знанием дела могут прокомментировать этот вопрос.

Mikko Ohtamaa 24.11.2018 14:09

Для справки в будущем вот мой Dockerfile: github.com/TokenMarketNet/sto/blob/master/Dockerfile

Mikko Ohtamaa 30.11.2018 13:04

Другие вопросы по теме