Я создал приложение командной строки Python, доступное через PyPi / pip install.
Приложение имеет собственные зависимости.
Чтобы сделать установку менее болезненной для пользователей Windows, я хотел бы создать Dockerized версию из этого приложения командной строки.
Как легко преобразовать setup.py с точкой входа и requirements.txt в приложение командной строки? Есть ли какие-то инструменты для этого, или мне просто написать Dockerfile вручную?
Почему бы не использовать PyInstaller?
официальное руководство Docker по созданию и запуску пользовательских образов очень близок к тому, о чем вы просите.
@phd Почему бы и нет ... с Docker вам нужно создавать и распространять только один образ. PyInstaller по-прежнему должен будет создавать разные двоичные файлы для каждой платформы.






Что ж, вам нужно создать 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 заново.
Общее практическое правило - использовать образ alpine и устанавливать только необходимые зависимости, удалять кеш apk, но вы можете найти в Интернете различные источники для python.
Еще раз, спасибо. Также вы попадаете в точку, когда говорите, что в Интернете можно найти разные источники - источники «разные». Есть хорошие, плохие и уродливые учебники, и поэтому я обращаюсь к профессиональному совету по StackOverflow, поскольку здесь люди со знанием дела могут прокомментировать этот вопрос.
Для справки в будущем вот мой Dockerfile: github.com/TokenMarketNet/sto/blob/master/Dockerfile
напишите Dockerfile ;-)