---
title: 'Как развернуть Python приложение в Docker-Compose | Zomro'
description: 'В этой статье мы рассмотрим, когда и почему стоит использовать Docker Compose для развертывания Python приложений.'
image: 'https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/dalle-2024-07-08-201913-a-minimalist-rectangular-widescreen-infographic-in-pink-and-purple-colors-themed-around-python-application-in-docker-compose-the-infographic-shoul_q50.jpg'
---

![opened image]()

  * [Zomro](https://zomro.com/rus/)
  * [FAQ](https://zomro.com/rus/blog/faq/)
  * Как развернуть Python приложение в Docker-Compose 



# Как развернуть Python приложение в Docker-Compose

05-07-2024

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/dalle-2024-07-08-201913-a-minimalist-rectangular-widescreen-infographic-in-pink-and-purple-colors-themed-around-python-application-in-docker-compose-the-infographic-shoul_q50.jpg)

В мире разработки программного обеспечения, особенно в области веб-разработки, необходимость в изолированных и легко управляемых окружениях становится всё более актуальной. Одним из наиболее эффективных инструментов для решения этой задачи является Docker Compose. В этой статье мы рассмотрим, когда и почему стоит использовать Docker Compose для развертывания Python приложений, а также покажем пошаговое руководство по настройке и запуску вашего Python приложения с использованием Docker Compose.

**Преимущества Использования Docker Compose**

**Изолированная Среда Разработки**

  * Docker Compose позволяет создавать изолированные среды для каждого проекта. Это помогает избежать конфликтов версий библиотек и зависимостей между разными проектами. Каждое приложение работает в своём собственном контейнере с определёнными версиями зависимостей, что значительно упрощает управление проектами.



**Мультисервисная Архитектура**

  * Современные приложения часто состоят из множества сервисов, таких как базы данных, кэш-сервера, брокеры сообщений и т.д. Docker Compose позволяет описать все эти сервисы в одном файле docker-compose.yml и запускать их одновременно. Это упрощает конфигурацию и управление зависимостями между сервисами.



**Автоматизация Развертывания**  


  * Docker Compose упрощает процесс развертывания приложений в различных средах, таких как локальная разработка, тестирование и продакшн. Один и тот же файл docker-compose.yml можно использовать для развертывания приложения в различных окружениях с минимальными изменениями. Это обеспечивает повторяемость и предсказуемость развертываний.



**Легкость Масштабирования**  


  * С Docker Compose легко масштабировать приложение, добавляя или удаляя экземпляры сервисов. Это полезно для тестирования масштабируемости приложения или для управления нагрузкой в продакшн-среде. Команды docker-compose scale или параметр replicas позволяют быстро изменить количество работающих экземпляров сервисов.



**Повторяемость Окружения**  


  * С Docker Compose можно гарантировать, что все разработчики на проекте работают в идентичном окружении. Это помогает избежать проблем, связанных с "работает у меня, но не работает у вас". Все зависимости и конфигурации описаны в одном файле, что обеспечивает консистентность окружения на всех этапах разработки и тестирования.



**Интеграция с CI/CD**  


  * Docker Compose легко интегрируется с системами CI/CD (Continuous Integration/Continuous Deployment). Это позволяет автоматизировать тестирование и развертывание приложений, обеспечивая быстрый и надежный процесс разработки и доставки программного обеспечения.



**Docker Compose** хорошо интегрируется с системами непрерывной интеграции и непрерывного развертывания (CI/CD). Это позволяет автоматизировать тестирование и развертывание приложений, повышая эффективность разработки и доставки. Инструменты CI/CD могут использовать файл docker-compose.yml для создания и тестирования контейнеров на различных этапах пайплайна.  
Пошаговое Руководство по Развертыванию Python Приложения с Docker Compose

**Создание Dockerfile**  


Первым шагом необходимо создать **Dockerfile** для вашего Python приложения. Этот файл будет содержать инструкции по созданию **Docker-образа** для вашего приложения.

Пример **Dockerfile** :
    
    
    # Используем базовый образ Python
    FROM python:3.9-slim
    
    # Устанавливаем рабочую директорию
    WORKDIR /app
    
    # Копируем файл зависимостей и устанавливаем их
    COPY requirements.txt .
    
    RUN pip install --no-cache-dir -r requirements.txt
    
    # Копируем исходный код приложения в контейнер
    COPY . .
    
    # Указываем команду для запуска приложения с gunicorn
    CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/01_q50.jpg)

**Создание файла зависимостей**

Создайте файл **requirements.txt** , в котором будут перечислены все зависимости вашего Python приложения.

Пример **requirements.txt** :
    
    
    Flask==2.0.1
    Werkzeug==2.0.1
    requests==2.25.1
    psycopg2-binary==2.9.3
    gunicorn==20.1.0

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/02_q50.jpg)

**Создание файла Docker Compose**

Теперь необходимо создать файл **docker-compose.yml** , в котором будут описаны все сервисы, необходимые для вашего приложения.

Пример **docker-compose.yml** :
    
    
    services:
      web:
        build: .
        command: python app.py
        volumes:
          - .:/app
        ports:
          - "5000:5000"
        depends_on:
          - db
    
      db:
        image: postgres:13
        environment:
          POSTGRES_USER: user
          POSTGRES_PASSWORD: password
          POSTGRES_DB: mydatabase
    
    networks:
      default:
        driver: bridge

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/03_q50.jpg)

**Структура проекта**

  
Ваш проект должен иметь следующую структуру:
    
    
    my_project/
    │
    ├── Dockerfile
    ├── docker-compose.yml
    ├── requirements.txt
    └── app.py

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/04_q50.jpg)

**Запуск Docker Compose**  


Перейдите в директорию вашего проекта и выполните команду:
    
    
    docker-compose up -d

Эта команда построит Docker-образы и запустит контейнеры для вашего приложения и базы данных. Вы увидите логи запуска вашего приложения и базы данных в терминале.

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2024/07/08/06_q50.jpg)​​​​​​​

**Пример Python Приложения**  


Для полноты картины приведем простой пример Python приложения на Flask (**app.py**):
    
    
    from flask import Flask
    import psycopg2
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        conn = psycopg2.connect(
            dbname="mydatabase",
            user="user",
            password="password",
            host="db"
        )
        cur = conn.cursor()
        cur.execute("SELECT version();")
        db_version = cur.fetchone()
        cur.close()
        conn.close()
        return f"Hello, World! Database version: {db_version}"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)

**Завершение**

​​​​​​​  
Теперь ваше Python приложение развернуто с помощью Docker Compose. Вы можете перейти в браузер и открыть http://localhost:5000, чтобы увидеть результат. Docker Compose обеспечивает легкость настройки, запуска и управления многосервисными приложениями, что делает его идеальным инструментом для разработки и развертывания Python приложений.  
Docker Compose — это мощный инструмент, который стоит рассмотреть для использования в любом проекте, особенно если он состоит из нескольких взаимозависимых компонентов.

Похожие статьи

[Как отправлять оповещения по email, после входа пользователя по SSH](https://zomro.com/rus/blog/faq/378-how-to-send-email-notifications-after-a-user-logs-in-via-ssh) [Как переустановить ОС на выделенном сервере](https://zomro.com/rus/blog/faq/122-kak-pereustanovit-os-na-vydelennom-servere) [Установка Python 3.13 на Ubuntu 24.04](https://zomro.com/rus/blog/faq/670-installing-python-313-on-ubuntu-2404) [Как разрешить загрузку изображений размером более 2560 пикселей в WordPress](https://zomro.com/rus/blog/faq/362-how-to-allow-images-larger-than-2560-pixels-to-be-uploaded-in-wordpress) [Как устранить ошибки "Слишком много переадресаций" в CMS WordPress](https://zomro.com/rus/blog/faq/440-how-to-fix-too-many-redirects-errors-in-wordpress-cms)

[ Выделенный сервер с GPU от €174.80/мес ](/dedicated-servers/type=gpu)
