Как создать Docker контейнер для работы скрипта на Python?
Мне нужно создать Docker файл для моего скрипта на Python, который состоит из файлов .py , виртуального окружения и .exe файла необходимого для работы скрипта. Суть скрипта — скрипт используется для парсинга на Selenium, поэтому для работы необходим файл драйвера chormedriver.exe . В контейнер это нужно обернуть, чтобы скрипт мог работать на нужном мне хостинге. Вот код который у меня есть:
# Код из .py файла, где используется chromedriver.exe global driver driver = webdriver.Chrome(options=options, executable_path=r"chromedriver.exe") driver.get(f"https://www.wildberries.ru/catalog//feedbacks?imtId=") time.sleep(5) big_stat = driver.find_element(by=By.CLASS_NAME, value="rating-product__numb")
Код Dockerfile, который мне посоветовали написать:
FROM ubuntu:18.04 RUN apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false update RUN apt-get install -y python3 python3-pip python3-setuptools python3-dev python-distribute RUN alias python=python3 RUN echo "alias python=python3" >> ~/.bashrc RUN apt-get -qy --no-install-recommends install \ sudo \ unzip \ wget \ curl \ libxi6 \ libgconf-2-4 \ vim \ xvfb \ && rm -rf /var/lib/apt/lists/* RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \ apt-get -yqq update && \ apt-get -yqq install google-chrome-stable && \ rm -rf /var/lib/apt/lists/* RUN apt-get -qy --no-install-recommends install \ $(apt-cache depends firefox | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ') \ && rm -rf /var/lib/apt/lists/* \ && cd /tmp \ && wget --no-check-certificate -O firefox-esr.tar.bz2 \ 'https://download.mozilla.org/?product=firefox-esr-latest&os=linux64&lang=en-US' \ && tar -xjf firefox-esr.tar.bz2 -C /opt/ \ && ln -s /opt/firefox/firefox /usr/bin/firefox \ && rm -f /tmp/firefox-esr.tar.bz2 RUN set -e RUN echo "Starting X virtual framebuffer (Xvfb) in background. " RUN Xvfb -ac :99 -screen 0 1280x1024x16 > /dev/null 2>&1 & RUN export DISPLAY=:99 RUN exec "$@" RUN apt-get update -y RUN apt-get -qy --no-install-recommends install python3.8 RUN rm /usr/bin/python3 RUN ln -s python3.8 /usr/bin/python3 RUN export PYTHONIOENCODING=utf8 RUN echo "export PYTHONIOENCODING=utf8" >> ~/.bashrc COPY sbase /SeleniumBase/sbase/ COPY seleniumbase /SeleniumBase/seleniumbase/ COPY examples /SeleniumBase/examples/ COPY integrations /SeleniumBase/integrations/ COPY requirements.txt /SeleniumBase/requirements.txt COPY setup.py /SeleniumBase/setup.py RUN find . -name '*.pyc' -delete RUN find . -name __pycache__ -delete RUN pip3 install --upgrade pip RUN pip3 install --upgrade setuptools RUN pip3 install --upgrade setuptools-scm RUN cd /SeleniumBase && ls && pip3 install -r requirements.txt --upgrade RUN cd /SeleniumBase && pip3 install . RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-linux64.tar.gz RUN tar -xvzf geckodriver-v0.31.0-linux64.tar.gz RUN chmod +x geckodriver RUN mv geckodriver /usr/local/bin/ RUN wget https://chromedriver.storage.googleapis.com/2.44/chromedriver_linux64.zip RUN unzip chromedriver_linux64.zip RUN chmod +x chromedriver RUN mv chromedriver /usr/local/bin/ COPY integrations/docker/docker-entrypoint.sh / COPY integrations/docker/run_docker_test_in_firefox.sh / COPY integrations/docker/run_docker_test_in_chrome.sh / RUN chmod +x *.sh COPY integrations/docker/docker_config.cfg /SeleniumBase/examples/ ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["/bin/bash"]
Контейнеризации Python-приложений
Контейнеризация Python-приложений с помощью Docker – это отличный способ сделать их более переносимыми, масштабируемыми и безопасными. В этой статье мы рассмотрим 7 простых шагов по контейнеризации Python-приложения с помощью Docker
88 показов
43 открытия
Шаг 1: Установка базового образа
Первым шагом является выбор базового образа для контейнера. Мы рекомендуем использовать минимальный базовый образ, например python:3.11-slim. Это позволит уменьшить размер контейнера и повысить его безопасность.
Шаг 2: Создание непривилегированного пользователя
Официальный образ контейнера Python не содержит предустановленного непривилегированного пользователя. Поэтому нам необходимо его создать. Мы создадим пользователя с UID 1000 и GID 1000.
RUN groupadd -g 1000 python && \ useradd -r -u 1000 -g python python
Шаг 3: Копирование и установка зависимостей
Если ваше приложение имеет какие-либо зависимости, то их необходимо скопировать в контейнер и установить. Это можно сделать с помощью инструкций COPY и RUN.
COPY requirements.txt . RUN pip install -r requirements.txt
Шаг 4: Настройка рабочего каталога
Далее необходимо создать внутри контейнера каталог, в котором будет храниться исходный код нашего приложения. Мы создадим каталог /app и убедимся, что он принадлежит непривилегированному пользователю, которого мы создали на шаге 2.
RUN mkdir /app && chown python:python /app WORKDIR /app
Шаг 5: Скопируйте код приложения
Теперь необходимо скопировать исходный код нашего приложения в рабочий каталог.
Шаг 6: Запуск от имени непривилегированного пользователя
Нам необходимо убедиться, что процессы, запущенные в нашем контейнере, будут выполняться в непривилегированном режиме. Это можно сделать с помощью инструкции USER.
Шаг 7: Задание команды входа
Наконец, необходимо указать, какая команда должна быть выполнена при запуске контейнера. Мы хотим выполнить исходный код нашего приложения, поэтому используем инструкцию CMD.
CMD [«python», «app.py»]
После выполнения этих шагов можно собрать образ Docker с помощью следующей команды:
docker build -t my-python-app .
Для запуска контейнера можно воспользоваться следующей командой:
docker run -p 8080:80 my-python-app
Это приведет к запуску контейнера и открытию порта 8080 на хост-машине. Теперь вы можете получить доступ к своему приложению по адресу http://localhost:8080.
Ниже приведен пример Dockerfile для простого Python-приложения:
FROM python:3.11-slimRUN groupadd -g 1000 python && \ useradd -r -u 1000 -g python python COPY requirements.txt . RUN pip install -r requirements.txt RUN mkdir /app && chown python:python /app WORKDIR /app COPY app.py . USER 1000 CMD [«python», «app.py»]
Для создания образа Docker необходимо выполнить следующую команду:
docker build -t my-python-app .
Для запуска контейнера необходимо выполнить следующую команду:
docker run -p 8080:80 my-python-app
Это приведет к запуску контейнера и открытию порта 8080 на хост-машине. После этого вы сможете получить доступ к своему приложению по адресу http://localhost:8080.
Надеюсь, эта статья была полезной!
Вот несколько дополнительных советов по контейнеризации Python-приложений:
- Используйте многоступенчатую сборку, чтобы отделить процесс сборки от среды выполнения. Это позволит сделать образ Docker меньше и эффективнее.
- Используйте тома для монтирования каталогов с хост-машины в контейнер. Это позволит разрабатывать и отлаживать приложение внутри контейнера без необходимости пересобирать образ при каждом изменении.
- Использовать реестр Docker для хранения и совместного использования образов Docker.Надеюсь, вы сделаете это быстрее
Используем Docker для python приложения

Технология контейнеризации Docker — своеобразная священная корова последних лет в области Информационных Технологий. Именно с помощью Docker и различных систем управления для контейнеров получается реализовать самые высоконагруженные системы в мире. Также заметно упрощается процесс разработки приложений. В свое время уже писал в блоге статью из этой области — Docker в повседневной работе ITшника. Сейчас хотелось бы немного больше осветить практическую часть вопроса. А именно способ запуска python приложения в Docker контейнере на сервере. При этом подразумевается, что Вы не используете инфраструктуру наподобие Kubernetes или его аналогов, а просто хотите по мере необходимости использовать контейнеры от случая к случаю. Частенько бывает ситуация, что сервер для различных задач задействует возможности Python v2. При этом есть существенная необходимость запускать приложения, написанные на Python v3. Использование Docker позволяет элегантно решить эту задачу.
По большому счету для того, чтобы ощутить всю прелесть преимуществ использования Docker нужна хорошая система оркестрации. Именно при полной декомпозиции программных приложений под Docker с использованием систем управления мы получим отличное масштабирование, фишки CI/CD, отказоустойчивость. В данном примере всего этого у нас не будет. Мы будем разворачивать наше контейнеризированное приложение напрямую в операционной системе Linux. Это будет своеобразным примером, который позволит понять с практической точки зрения как же на самом деле работает Docker в реальной жизни.
Что делать
В первую очередь необходимо установить сам Docker, с помощью которого мы будем собирать образ и запускать контейнер с нашим приложением Python. Для разных дистрибутивов есть соотвествующие руководства на сайте docker.com. Так для Ubuntu можно почитать по этой ссылке. Вкратце последовательность команд в консоли Ubuntu Linux будет следующая:
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
После проведенных манипуляций мы получим работающий Docker в системе. Это можно проверить с помощью команды docker version. Пример вывода данной команды представлен ниже.
$ docker version Client: Docker Engine - Community Version: 19.03.5 API version: 1.40 Go version: go1.12.12 Git commit: 633a0ea838 Built: Wed Nov 13 07:50:12 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.5 API version: 1.40 (minimum version 1.12) Go version: go1.12.12 Git commit: 633a0ea838 Built: Wed Nov 13 07:48:43 2019 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.10 GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339 runc: Version: 1.0.0-rc8+dev GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 docker-init: Version: 0.18.0 GitCommit: fec3683
Когда мы проверили, что установка Docker прошла успешна, пришло время для создания образа контейнера, в котором мы будем запускать наше приложение. В качестве приложения будем использовать telegram бот, создание которого я описывал в статье — Telegram боты и их создание. Создадим Dockerfile со следующим содержанием, который позволит на базе образа python из Docker Hub получить нужный нам контейнер.
FROM python:3 WORKDIR /usr/src/app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY bot.ini bot.ini COPY bot.py bot.py CMD [ "python", "./bot.py" ]
В файле requirements.txt содержится список модулей Python, которые будут установлены с помощью менджера пакетов pip в контейнер. Этот файл, а также прочие файлы, которые с помощью директивы COPY будут помещены в образ создаваемого контейнера должны находиться в той же директории, что и Dockerfile. Содержание requirements.txt для данного примера приведено ниже.
python-telegram-bot emoji
В файле bot.py у нас содержится непосредственно код telegram бота, который будет запускаться в контейнере. А в файлике bot.ini — первоначальные кофигурационные данные для запуска приложения. После того, как все вышеуказанные файлы будут готовы, можно приступать к сборке образа контейнера. Это делается с помощью следующей команды.
$ docker build -t python-docker-app .
Мы получили нужный образ, который можем запускать для работы в продакшене. Это можно делать через утилиту командной строки docker run, а можно и с помощью скрипта systemd. В случае со скриптом systemd мы получим сервис, которым можно будет полноценно управлять системными средствами. То есть, данное приложение можно будет запускать автоматически при старте сервера, а также следить за его постоянной работоспособностью. Пример такого скрипта приведен ниже.
[Unit] Description=Python Script in Docker Requires=docker.service After=docker.service [Service] Restart=always RestartSec=3 ExecStartPre=/bin/sh -c "/usr/bin/docker rm -f my-running-app 2> /dev/null || /bin/true" ExecStart=/usr/bin/docker run --rm --name my-running-app python-docker-app ExecStop=/usr/bin/docker stop my-running-app [Install] WantedBy=multi-user.target
Данный скрипт размещаем в директории /etc/systemd/system. Назовем его к примеру — docker-python.service. После того, как он будет готов, выполняем команду # systemctl daemon-reload. Теперь наше докеризированное приложение может запускаться, останавливаться и управляться с помощью системной утилиты service.
Резюме
Небольшой пример из данной статьи показывает реальный жизненный кейс о том, как запускать Python приложение в отдельном контейнере на обычном Linux сервере. Если Вы занимаетесь этим на постоянной основе, то разделив различные приложения по отдельным контейнерам, можно отлично использовать один общий виртуальный или физический сервер для целей их хостинга. При этом одно приложение никоим образом не будет влиять на другое. Вопросы синтаксиса при написании Dockerfile не рассматривал в данной статье. Также упор был сделан на запуск приложения, которое использует только один собственный контейнер. О том, как работать с многоконтейнерными приложениями, мы поговорим в следующих статьях этого блога.
Создание и запуск контейнерного веб-приложения Python локально с помощью MongoDB
Эта статья является частью руководства по контейнеризации и развертыванию контейнерного веб-приложения Python в службе приложение Azure. Служба приложений позволяет запускать контейнерные веб-приложения и развертывать их с помощью возможностей непрерывной интеграции и непрерывного развертывания (CI/CD) с помощью Docker Hub, Реестр контейнеров Azure и Visual Studio Team Services. В этой части руководства вы узнаете, как создать и запустить контейнерное веб-приложение Python локально. Этот шаг является необязательным и не требуется для развертывания примера приложения в Azure.
Для локального запуска образа Docker в среде разработки требуется настройка за пределами развертывания в Azure. Думайте об этом как об инвестициях, которые могут упростить будущие циклы разработки, особенно когда вы переходите за рамки примеров приложений, и вы начинаете создавать собственные веб-приложения. Чтобы развернуть примеры приложений для Django и Flask, можно пропустить этот шаг и перейти к следующему шагу в этом руководстве. Вы всегда можете вернуться после развертывания в Azure и выполнить эти действия.
На схеме служб, показанной ниже, выделены компоненты, описанные в этой статье.
1. Клонирование или скачивание примера приложения
# Django git clone https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git # Flask git clone https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git
Затем перейдите в эту папку:
# Django cd msdocs-python-django-container-web-app # Flask cd msdocs-python-flask-container-web-app
Выберите Код, а затем выберите Скачать ZIP-файл.
Распакуйте ZIP-файл в папку и откройте окно терминала в этой папке.
2. Создание образа Docker
Если вы используете один из примеров приложений платформы, доступных для Django и Flask, вы можете перейти. Если вы работаете с собственным примером приложения, посмотрите, как настроены примеры приложений, в частности Dockerfile в корневом каталоге.
- VS Code
- Интерфейс командной строки Docker
Для этих инструкций требуется Visual Studio Code и расширение Docker. Перейдите в пример папки, клонированную или скачав, и откройте VS Code с помощью команды code . .
Для этих инструкций требуется Docker.
Запустите корень примера приложения, клонированного или скачаного.
Шаг 1. В командной строке оболочки убедитесь, что Docker доступен.
docker
Если после выполнения этой команды вы увидите справку по интерфейсу командной строки Docker, а затем продолжить. В противном случае убедитесь, что Docker установлен или у вашей оболочки есть доступ к Интерфейсу командной строки Docker.
Шаг 2. Создание образа.
Общая форма команды сборки Docker . docker build —rm —pull —file «/Dockerfile» —label «com.microsoft.created-by=docker-cli» —tag «:latest» «»
Например, если вы находитесь в корневом каталоге проекта, можно использовать следующую команду для создания образа:
docker build --rm --pull \ --file "Dockerfile" \ --label "com.microsoft.create-by=docker-cli" \ --tag "msdocspythoncontainerwebapp:latest" \ .
docker build --rm --pull ` --file "Dockerfile" ` --label "com.microsoft.create-by=docker-cli" ` --tag "msdocspythoncontainerwebapp:latest" ` .
Обратите внимание на точку («.») в конце команды, ссылающейся на текущий момент, в котором выполняется команда. Можно добавить —no-cache для принудительного перестроения.
Шаг 3. Убедитесь, что изображение создано.
docker images
Изображения должны отображаться по имени репозитория, ТЕГу и дате CREATED среди других характеристик изображения.
На этом этапе вы создали образ локально. Созданный образ имеет имя msdocspythoncontainerwebapp и тег «latest». Теги — это способ определения сведений о версиях, предполагаемого использования, стабильности или других сведений. Дополнительные сведения см. в статье Рекомендации по использованию тегов и управлению версиями образов контейнеров.
Изображения, созданные из VS Code или с помощью интерфейса командной строки Docker, также можно просматривать с помощью классического приложения Docker .
3. Настройка MongoDB
Для работы с этим руководством требуется база данных MongoDB с именем restaurants_reviews и коллекция с именем restaurants_reviews. В этом разделе показано, как использовать локальную установку MongoDB или Azure Cosmos DB для MongoDB для MongoDB для создания и доступа к базе данных и коллекции.
Не используйте базу данных MongoDB, которую вы будете использовать в рабочей среде. В этом руководстве вы сохраните строка подключения MongoDB в переменной среды. Это делает его видимым для всех, кто может проверять контейнер (например, с помощью docker inspect ).
- Локальный MongoDB
- Azure Cosmos DB для MongoDB
Шаг 1. Установите MongoDB , если это еще не так.
Проверьте, установлен ли он:
mongo --version
Шаг 2. Измените файл mongod.cfg , чтобы добавить IP-адрес компьютера.
В файле конфигурации mongod есть ключ, определяющий bindIp имена узлов и IP-адреса, которые MongoDB прослушивает клиентские подключения. Добавьте текущий IP-адрес локального компьютера разработки. Пример приложения, запущенного локально в контейнере Docker, будет взаимодействовать с хост-компьютером с этим адресом.
Например, часть файла конфигурации должна выглядеть следующим образом:
net: port: 27017 bindIp: 127.0.0.1,
Перезапустите MongoDB, чтобы получить изменения в файле конфигурации.
Шаг 3. Создание базы данных и коллекции в локальной базе данных MongoDB.
Задайте для имени базы данных значение «restaurants_reviews», а имя коллекции — «restaurants_reviews». Базу данных и коллекцию можно создать с помощью расширения MongoDB VS Code, оболочки MonogoDB (mongosh) или любого другого средства с поддержкой MondoDB.
Для оболочки MongoDB приведены примеры команд для создания базы данных и коллекции:
> help > use restaurants_reviews > db.restaurants_reviews.insertOne(<>) > show dbs > exit
На этом этапе локальный строка подключения MongoDB имеет значение «mongodb://127.0.0.1:27017/», имя базы данных — «restaurants_reviews», а имя коллекции — «restaurants_reviews».
Для создания учетной записи Azure Cosmos DB для MongoDB можно использовать команды Azure CLI, а затем создать необходимую базу данных и коллекцию для этого руководства. Если вы еще не использовали Azure CLI, см. статью «Начало работы с Azure CLI», чтобы узнать, как скачать и установить Azure CLI локально или как выполнять команды Azure CLI в Azure Cloud Shell.
Перед выполнением следующего скрипта замените расположение и имя учетной записи Azure Cosmos DB для MongoDB соответствующими значениями. Вы можете использовать имя группы ресурсов, указанное в скрипте, или изменить его. В любом случае мы рекомендуем использовать одну и ту же группу ресурсов для всех ресурсов Azure, созданных в различных статьях этого руководства. Это упрощает их удаление после завершения работы с руководством. Если вы приехали сюда из части 4. Разверните контейнер Служба приложений, используйте имя группы ресурсов и расположение, которое вы уже использовали для ресурсов.
Сценарий предполагает, что вы используете оболочку Bash. Если вы хотите использовать другую оболочку, необходимо изменить синтаксис объявления переменной и подстановки. Выполнение скрипта может занять несколько минут.
#!/bin/bash # LOCATION: The Azure region. Use the "az account list-locations -o table" command to find a region near you. # RESOURCE_GROUP_NAME: The resource group name. Can contain underscores, hyphens, periods, parenthesis, letters, and numbers. # ACCOUNT_NAME: The Azure Cosmos DB for MongDB account name. Can contain lowercase letters, hyphens, and numbers. LOCATION='eastus' RESOURCE_GROUP_NAME='msdocs-web-app-rg' ACCOUNT_NAME='' # Create a resource group echo "Creating resource group $RESOURCE_GROUP_NAME in $LOCATION. " az group create --name $RESOURCE_GROUP_NAME --location $LOCATION # Create a Cosmos account for MongoDB API echo "Creating $ACCOUNT_NAME. This command may take a while to complete." az cosmosdb create --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --kind MongoDB # Create a MongoDB API database echo "Creating database restaurants_reviews" az cosmosdb mongodb database create --account-name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --name restaurants_reviews # Create a MongoDB API collection echo "Creating collection restaraunts_reviews" az cosmosdb mongodb collection create --account-name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --database-name restaurants_reviews --name restaurants_reviews # Get the connection string for the MongoDB database echo "Get the connection string for the MongoDB account" az cosmosdb keys list --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --type connection-strings echo "Copy the Primary MongoDB Connection String from the list above"
После завершения скрипта скопируйте основную строку mongoDB Подключение ion String из выходных данных последней команды.
На этом этапе необходимо иметь azure Cosmos DB для MongoDB строка подключения формы mongodb://:@.mongo.cosmos.azure.com:10255/?ssl=true& , базу данных с именем restaurants_reviews и коллекцию с именем restaurants_reviews .
Дополнительные сведения об использовании Azure CLI для создания учетной записи Cosmos DB для MongoDB и создания баз данных и коллекций см. в статье «Создание базы данных и коллекции для MongoDB для Azure Cosmos DB с помощью Azure CLI». Вы также можете использовать PowerShell, расширение баз данных Azure VS Code и портал Azure.
В расширении баз данных AZURE VS Code щелкните правой кнопкой мыши сервер MongoDB и получите строка подключения.
4. Локальный запуск образа в контейнере
Сведения о том, как подключиться к MongoDB, можно запустить контейнер локально. В примере приложения ожидается, что сведения о подключении MongoDB передаются в переменных среды. Существует несколько способов получения переменных среды, передаваемых в контейнер локально. Каждый из них имеет преимущества и недостатки с точки зрения безопасности. Следует избегать проверка в любой конфиденциальной информации или оставлять конфиденциальную информацию в коде в контейнере.
При развертывании в Azure веб-приложение получит сведения о подключении из значений среды, заданных в качестве параметров конфигурации Служба приложений, и никакие изменения для сценария локальной среды разработки не применяются.
- VS Code
- Интерфейс командной строки Docker
- Замените оба экземпляра IP-адресом.
- Замените оба экземпляра строка подключения для базы данных MongoDB.
- Замените оба экземпляра строка подключения Azure Cosmos DB для MongoDB.
Предполагается restaurants_reviews , что имя базы данных и имя коллекции.
Этот шаг завершается ошибкой, если для профиля терминала по умолчанию задано значение командной строки Windows. Чтобы изменить профиль по умолчанию, откройте палитру команд VS Code (CTRL+SHIFT+P), введите «Терминал: Выберите профиль по умолчанию», а затем выберите другой профиль из раскрывающегося меню, например Git Bash или PowerShell.
Вы также можете запустить контейнер, выбрав конфигурацию запуска или отладки. Задачи расширения Docker в tasks.json вызываются при запуске или отладке. Вызываемая задача зависит от выбранной конфигурации запуска. Для задачи «Docker: Python (local MongoDB)» укажите . Для задачи «Docker: Python (MongoDB Azure)» укажите .
Шаг 1. Запустите последнюю версию образа.
- Локальный MongoDB
- Azure Cosmos DB MongoDB
# PORT=8000 for Django and 5000 for Flask export PORT= export YOUR_IP_ADDRESS= docker run --rm -it \ --publish $PORT:$PORT --publish 27017:27017 \ --add-host mongoservice:$YOUR_IP_ADDRESS \ --env CONNECTION_STRING=mongodb://mongoservice:27017 --env DB_NAME=restaurants_reviews --env COLLECTION_NAME=restaurants_reviews \ msdocspythoncontainerwebapp:latest
Указанная выше команда отформатирована для оболочки Bash. Если вы используете PowerShell, командную строку или другую оболочку, вам может потребоваться соответствующим образом изменить формат продолжения строки и переменной среды.
# PORT=8000 for Django and 5000 for Flask export PORT= export CONNECTION_STRING="" docker run --rm -it \ --publish $PORT:$PORT/tcp \ --env CONNECTION_STRING=$CONNECTION_STRING --env DB_NAME=restaurants_reviews --env COLLECTION_NAME=restaurants_reviews \ msdocspythoncontainerwebapp:latest
Указанная выше команда отформатирована для оболочки Bash. Если вы используете PowerShell, командную строку или другую оболочку, вам может потребоваться соответствующим образом изменить формат продолжения строки и переменной среды.
Передача конфиденциальной информации, как показано здесь, предназначена для демонстрационных целей. Сведения строка подключения можно просмотреть, проверив контейнер с помощью проверки контейнера docker команды. Другим способом обработки секретов является использование функций BuildKit Docker.
Шаг 2. Убедитесь, что контейнер запущен.
Откройте вторую оболочку и выполните команду docker container ls .
docker container ls
В списке должен появиться контейнер msdocspythoncontainerwebapp:latest:latest. Обратите внимание на NAMES столбец выходных данных и PORTS столбец. Имя можно использовать для остановки контейнера.
Шаг 3. Тестирование веб-приложения.
Перейдите в раздел «http://127.0.0.1:8000» для Django и «http://127.0.0.1:5000/» для Flask при запуске с локальным MongoDB.
Шаг 4. Завершение работы контейнера
docker container stop
Вы также можете запустить контейнер из образа и остановить его с помощью приложения Docker Desktop .
