Как создать 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"]
Что такое Docker? Полное руководство по использованию Docker с Python
Докер — это открытая платформа, которая позволяет разработчикам создавать, развертывать и запускать приложения в изолированных контейнерах. Когда вы используете Docker с Python, вы можете создавать контейнеры, которые содержат все зависимости вашего приложения, включая сам Python и необходимые библиотеки. Это упрощает переносимость и развертывание вашего приложения на различные операционные системы и серверы. Вот пример использования Docker с Python:
# Создаем Dockerfile FROM python:3.9 WORKDIR /app COPY . /app RUN pip install -r requirements.txt CMD ["python", "app.py"]
В этом примере мы создаем Dockerfile, который определяет, как должен быть собран контейнер. Мы используем базовый образ Python 3.9, устанавливаем зависимости, копируем наше приложение в контейнер и указываем команду запуска приложения. Затем, вы можете создать и запустить контейнер из этого Dockerfile, используя команды Docker CLI, например:
docker build -t my-python-app . docker run my-python-app
Это всего лишь пример использования Docker с Python. Докер обладает гораздо большими возможностями, позволяя создавать и управлять множеством контейнеров и их развертыванием на различных средах. Надеюсь, это поможет вам понять основы Docker и его применение с Python.
Детальный ответ
Что такое докер питон?
Докер — это открытая платформа, которая позволяет автоматизировать развертывание, масштабирование и управление приложениями в контейнерах. Контейнер — это выполняемая среда, в которой работает приложение и все его зависимости. В контексте питона, докер позволяет упаковывать и запускать питон-приложения в изолированной среде. Для создания докеризированного питон-приложения, вам необходимо иметь Docker установленным на вашей машине. Затем вы можете создать Dockerfile — файл, который определяет, как ваше приложение будет собираться и запускаться в контейнере. Вот пример простого Dockerfile для питон-приложения:
FROM python:3.9 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [ "python", "./app.py" ]
В этом примере, мы используем официальный Docker образ питона версии 3.9 в качестве базового образа. Затем мы создаем рабочую директорию внутри контейнера, копируем файл requirements.txt и устанавливаем зависимости с помощью команды pip. Далее мы копируем все файлы нашего приложения в контейнер и указываем команду для запуска приложения. Чтобы собрать и запустить докеризированное питон-приложение, вы должны выполнить следующие команды:
# Сборка образа $ docker build -t my-python-app . # Запуск контейнера из образа $ docker run my-python-app
После выполнения этих команд, ваше питон-приложение будет запущено в контейнере, и вы сможете получить доступ к нему. Докер позволяет упаковывать приложения и их зависимости в контейнеры, что делает их переносимыми и изолированными от других приложений на хостовой машине. Это упрощает развертывание и масштабирование приложений, так как каждый контейнер может быть запущен и остановлен независимо от других контейнеров. Помимо этого, докер позволяет использовать контейнеры в качестве развивающейся среды для питон-разработки. Вы можете настроить контейнер с нужными версиями питона, библиотеками и инструментами разработки, что помогает обеспечить консистентность окружения между разработчиками и упростить настройку рабочего окружения. Вывод: Докер питон — это способ упаковывания и запуска питон-приложений в контейнеризованной среде. Он позволяет автоматизировать развертывание и масштабирование приложений, а также обеспечивает их изоляцию и переносимость. Докер питон помогает упростить процесс разработки и обеспечивает консистентность окружения.
Containerize a Python application
This section walks you through containerizing and running a Python application.
Get the sample application
The sample application uses the popular Flask open_in_new framework.
Clone the sample application to use with this guide. Open a terminal, change directory to a directory that you want to work in, and run the following command to clone the repository:
content_copy
Test the application without Docker (optional)
You can test the application locally without Docker before you continue building and running the application with Docker. This section requires you to have Python 3.11 or later installed on your machine. Download and install Python open_in_new .
Open your terminal and navigate to the working directory you created. Create an environment, install the dependencies, and start the application to make sure it’s running.
content_copy
To test that the application is working, open a new browser and navigate to http://localhost:5000 .
Switch back to the terminal where the server is running and you should see the following requests in the server logs. The data and timestamp will be different on your machine.
content_copy
Initialize Docker assets
Now that you have an application, you can use docker init to create the necessary Docker assets to containerize your application. Inside the python-docker directory, run the docker init command. Refer to the following example to answer the prompts from docker init .
content_copy
You should now have the following contents in your python-docker directory.
content_copy
To learn more about the files that docker init added, see the following:
Run the application
Inside the python-docker directory, run the following command in a terminal.
content_copy
Open a browser and view the application at http://localhost:5000 open_in_new . You should see a simple Flask application.
In the terminal, press ctrl + c to stop the application.
Run the application in the background
You can run the application detached from the terminal by adding the -d option. Inside the python-docker directory, run the following command in a terminal.
content_copy
Open a browser and view the application at http://localhost:5000 open_in_new .
You should see a simple Flask application.
In the terminal, run the following command to stop the application.
content_copy
For more information about Compose commands, see the Compose CLI reference.
Summary
In this section, you learned how you can containerize and run your Python application using Docker.
- Build with Docker guide
- Docker Compose overview
Next steps
In the next section, you’ll learn how you can develop your application using containers.
Что такое контейнеризация и как использовать Docker с Python
Узнайте, что такое контейнеризация, как использовать Docker с Python и сделать разработку, тестирование и развертывание проще и быстрее!
Алексей Кодов
Автор статьи
10 июля 2023 в 17:48
Контейнеризация – это процесс пакетирования приложения и всех его зависимостей в единый, стандартизированный блок, называемый контейнер. Это позволяет разработчикам и системным администраторам обеспечить надежное и последовательное выполнение приложений на разных платформах и инфраструктурах. В нашем случае, мы рассмотрим использование Docker – одной из самых популярных платформ контейнеризации – с Python.
Docker: что это и зачем нужно?
Docker – это платформа для разработки, доставки и запуска приложений в контейнерах. Он обеспечивает изоляцию ресурсов и зависимостей, что позволяет разрабатывать, тестировать и развертывать приложения быстро и надежно. Основные преимущества использования Docker с Python:
- Изоляция зависимостей: каждое Python-приложение работает с собственным набором библиотек и версиями, избегая конфликтов между ними.
- Быстрое развертывание: контейнеры позволяют легко упаковывать и передавать приложения вместе со всеми их зависимостями.
- Масштабируемость: Docker облегчает горизонтальное масштабирование приложений.
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT
Создание Dockerfile для Python-приложения
Чтобы начать использовать Docker с Python, вам нужно создать файл с именем Dockerfile в корневом каталоге вашего проекта. Этот файл содержит инструкции для создания образа контейнера, который будет использоваться для запуска вашего приложения.
Пример Dockerfile для Python-приложения:
# Выбор базового образа с Python
FROM python:3.8-slim
# Установка рабочей директории
WORKDIR /app
# Копирование файлов проекта
COPY . /app
# Установка зависимостей
RUN pip install —trusted-host pypi.python.org -r requirements.txt
# Открытие порта для взаимодействия с приложением
EXPOSE 8080
# Запуск приложения
CMD [«python», «app.py»]
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Сборка и запуск контейнера Docker
После создания Dockerfile вы можете собрать образ вашего контейнера с помощью следующей команды:
docker build -t my-python-app .
Здесь my-python-app — это имя, которое вы выбрали для образа вашего приложения.
Когда образ контейнера будет собран, вы сможете запустить его с помощью команды:
docker run -p 8080:8080 my-python-app
Теперь ваше Python-приложение будет работать внутри контейнера Docker, и вы сможете получить доступ к нему по адресу http://localhost:8080 (или другому порту, который вы указали в Dockerfile ).
Заключение
Контейнеризация с использованием Docker может значительно упростить разработку, тестирование и развертывание Python-приложений. Это позволяет изолировать ресурсы и зависимости, ускорить процесс развертывания и обеспечить гибкость масштабирования. Начните с создания Dockerfile для вашего проекта и опыт работы с Docker станет более понятным и приятным.
Не забудьте посетить нашу партнерскую онлайн-школу, которая предлагает курсы по Python-разработке. Ссылка на школу доступна через баннер ниже:
