Запустить скрипт Python без веб-сервера в Docker? - PullRequest
0 голосов
/ 04 марта 2019

Я работал с Docker, ранее используя службы для запуска веб-сайта, созданного с помощью Django.

Теперь я хотел бы знать, как мне создать Docker для запуска скриптов Python без веб-сервера и каких-либо сервисов.связанный с websited.

Пример обычного докера, к которому я привык, это:

version: '2'
services:
  nginx:
    image: nginx:latest
    container_name: nz01
    ports:
      - "8001:8000"
    volumes:
      - ./src:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: dz01
    depends_on:
      - db
    volumes:
      - ./src:/src
    expose:
      - "8000"
  db:
    image: postgres:latest
    container_name: pz01
    ports:
        - "5433:5432"
    volumes:
      - postgres_database:/var/lib/postgresql/data:Z
volumes:
    postgres_database:
        external: true

Каким должен быть файл docker-compose.yml?

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Вы можете легко запустить Python в интерактивном режиме, даже не создавая контейнер:

docker run -it python

Если вы хотите иметь доступ к некоторому коду, который вы написали в контейнере, просто измените его на:

docker run -it -v /path/to/code:/app: python

Создание Dockerfile не требуется для этого простого приложения.

0 голосов
/ 04 марта 2019

Большинство дистрибутивов Linux поставляются с предустановленным Python.Использование Docker здесь добавляет значительную сложность, и я бы настоятельно рекомендовал Docker не запускать простой скрипт.Вы можете использовать виртуальную среду , чтобы изолировать зависимости конкретного пакета Python от остальной системы.

(Существует довольно непротиворечивый поток вопросов SO о получении прав доступа к файловой системе и идентификаторов пользователей).для сценариев, которые в основном хотят взаимодействовать с хост-системой. Также помните, что при запуске docker что-либо подразумевает эквивалентные root-права. Если вам не нужна изоляция файловой системы Docker и пространства имен пользователя, IMHO, проще просто не использовать Docker там, где это не требуется.не имеет смысла.)

0 голосов
/ 04 марта 2019

Просто удалите из Dockerfile все, что не имеет ничего общего с вашим сценарием, и начните с чего-то простого, например

FROM python:3

ADD my_script.py /

CMD [ "python", "./my_script.py" ]

Вам не нужно Docker compose для контейнера одного скрипта Python.

Пример взят из этого простого руководства по контейнеризации приложений Python: https://runnable.com/docker/python/dockerize-your-python-application

Вы можете легко перезаписать команду, указанную в файле Docker (через CMD), при запуске контейнера из образа.Просто добавьте нужную команду к вашей команде docker run, например:

docker run IMAGE /path/to/script.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...