https://github.com/topotun77/vk_tw
Обмен данными между docker-контейнерами - docker-compose (Python, Docker, docker-compose, PostgreSQL, RabbitMQ)
https://github.com/topotun77/vk_tw
docker docker-compose postgresql python rabbitmq
Last synced: about 2 months ago
JSON representation
Обмен данными между docker-контейнерами - docker-compose (Python, Docker, docker-compose, PostgreSQL, RabbitMQ)
- Host: GitHub
- URL: https://github.com/topotun77/vk_tw
- Owner: Topotun77
- Created: 2025-06-18T18:43:58.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-06-19T19:13:21.000Z (about 1 year ago)
- Last Synced: 2025-06-19T20:26:30.544Z (about 1 year ago)
- Topics: docker, docker-compose, postgresql, python, rabbitmq
- Language: Python
- Homepage:
- Size: 89.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Обмен данными между docker-контейнерами (docker-compose)
#### Первый скрипт:
• публикует в очередь `RabbitMQ` каждые 5 секунд любое сообщение
#### Второй скрипт:
• читает из очереди `RabbitMQ` эти сообщения и записывает в таблицу БД `PostgreSQL`
• выводит лог текста сообщения в docker контейнер (время получения, текст сообщения)
• каждые 30 секунд выводит кол-во строк в таблице `PostgreSQL`
Стэк развернуть в docker контейнерах через docker-compose (1 и 2 скрипты, `RabbitMQ`, `PostgreSQL`).
В образах не должны быть чувствительных данных (креды подключения к `RabbitMQ`). Все чувствительные
данные выносятся в `.env` и подключаются через mount в контейнеры. Контейнеры работаю в своей
собственной docker сети.
---
В процессе выполнения скриптов ведется логирование. Пример записей в журнале:
```
SENDER --> | 2025-06-18 18:39:25,308 | INFO | pika.adapters.utils.connection_workflow | Pika version 1.3.2 connecting to ('172.19.0.3', 5672)
SENDER --> | 2025-06-18 18:39:25,310 | INFO | pika.adapters.utils.io_services_utils | Socket connected:
SENDER --> | 2025-06-18 18:39:25,310 | INFO | pika.adapters.utils.connection_workflow | Streaming transport linked up: (, _StreamingProtocolShim: params=>).
SENDER --> | 2025-06-18 18:39:25,322 | INFO | pika.adapters.utils.connection_workflow | AMQPConnector - reporting success: params=>
SENDER --> | 2025-06-18 18:39:25,322 | INFO | pika.adapters.utils.connection_workflow | AMQPConnectionWorkflow - reporting success: params=>
SENDER --> | 2025-06-18 18:39:25,323 | INFO | pika.adapters.blocking_connection | Connection workflow succeeded: params=>
SENDER --> | 2025-06-18 18:39:25,323 | INFO | pika.adapters.blocking_connection | Created channel=1
SENDER --> | 2025-06-18 18:39:25,327 | INFO | internal_log | Отправлено сообщение: "Сообщение #1 отправлено 2025-06-18 18:39:25.327714"
SENDER --> | 2025-06-18 18:39:30,328 | INFO | internal_log | Отправлено сообщение: "Сообщение #2 отправлено 2025-06-18 18:39:30.328046"
SENDER --> | 2025-06-18 18:39:36,198 | INFO | internal_log | Отправлено сообщение: "Сообщение #3 отправлено 2025-06-18 18:39:36.198377"
SENDER --> | 2025-06-18 18:39:41,199 | INFO | internal_log | Отправлено сообщение: "Сообщение #4 отправлено 2025-06-18 18:39:41.198896"
SENDER --> | 2025-06-18 18:39:46,199 | INFO | internal_log | Отправлено сообщение: "Сообщение #5 отправлено 2025-06-18 18:39:46.199375"
--> READER | 2025-06-18 18:39:50,674 | INFO | pika.adapters.utils.connection_workflow | Pika version 1.3.2 connecting to ('172.19.0.3', 5672)
--> READER | 2025-06-18 18:39:50,675 | INFO | pika.adapters.utils.io_services_utils | Socket connected:
--> READER | 2025-06-18 18:39:50,675 | INFO | pika.adapters.utils.connection_workflow | Streaming transport linked up: (, _StreamingProtocolShim: params=>).
--> READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.utils.connection_workflow | AMQPConnector - reporting success: params=>
--> READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.utils.connection_workflow | AMQPConnectionWorkflow - reporting success: params=>
--> READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.blocking_connection | Connection workflow succeeded: params=>
--> READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.blocking_connection | Created channel=1
--> READER | 2025-06-18 18:39:50,681 | INFO | internal_log | Получено сообщение: "Сообщение #1 отправлено 2025-06-18 18:39:25.327714"
--> READER | 2025-06-18 18:39:50,711 | INFO | internal_log | Получено сообщение: "Сообщение #2 отправлено 2025-06-18 18:39:30.328046"
--> READER | 2025-06-18 18:39:50,714 | INFO | internal_log | Количество записей в БД: 35
--> READER | 2025-06-18 18:39:50,717 | INFO | internal_log | Получено сообщение: "Сообщение #3 отправлено 2025-06-18 18:39:36.198377"
--> READER | 2025-06-18 18:39:50,725 | INFO | internal_log | Получено сообщение: "Сообщение #4 отправлено 2025-06-18 18:39:41.198896"
--> READER | 2025-06-18 18:39:50,733 | INFO | internal_log | Получено сообщение: "Сообщение #5 отправлено 2025-06-18 18:39:46.199375"
SENDER --> | 2025-06-18 18:39:51,200 | INFO | internal_log | Отправлено сообщение: "Сообщение #6 отправлено 2025-06-18 18:39:51.199870"
--> READER | 2025-06-18 18:39:51,200 | INFO | internal_log | Получено сообщение: "Сообщение #6 отправлено 2025-06-18 18:39:51.199870"
SENDER --> | 2025-06-18 18:39:56,200 | INFO | internal_log | Отправлено сообщение: "Сообщение #7 отправлено 2025-06-18 18:39:56.200424"
--> READER | 2025-06-18 18:39:56,201 | INFO | internal_log | Получено сообщение: "Сообщение #7 отправлено 2025-06-18 18:39:56.200424"
SENDER --> | 2025-06-18 18:40:01,201 | INFO | internal_log | Отправлено сообщение: "Сообщение #8 отправлено 2025-06-18 18:40:01.201051"
--> READER | 2025-06-18 18:40:01,202 | INFO | internal_log | Получено сообщение: "Сообщение #8 отправлено 2025-06-18 18:40:01.201051"
SENDER --> | 2025-06-18 18:40:07,069 | INFO | internal_log | Отправлено сообщение: "Сообщение #9 отправлено 2025-06-18 18:40:07.069624"
--> READER | 2025-06-18 18:40:07,070 | INFO | internal_log | Получено сообщение: "Сообщение #9 отправлено 2025-06-18 18:40:07.069624"
SENDER --> | 2025-06-18 18:40:12,070 | INFO | internal_log | Отправлено сообщение: "Сообщение #10 отправлено 2025-06-18 18:40:12.070215"
--> READER | 2025-06-18 18:40:12,070 | INFO | internal_log | Получено сообщение: "Сообщение #10 отправлено 2025-06-18 18:40:12.070215"
SENDER --> | 2025-06-18 18:40:17,071 | INFO | internal_log | Отправлено сообщение: "Сообщение #11 отправлено 2025-06-18 18:40:17.070788"
--> READER | 2025-06-18 18:40:17,071 | INFO | internal_log | Получено сообщение: "Сообщение #11 отправлено 2025-06-18 18:40:17.070788"
--> READER | 2025-06-18 18:40:21,589 | INFO | internal_log | Количество записей в БД: 45
```
### Статистика RabbitMQ:

### Лог sender:

### Лог reader:

## Для запуска приложения:
1. **Файл с чувствительными данными `.env` поместить в корень проекта.**
2. **Запустите весь стэк командой:**
```
docker-compose up -d
```
Это запустит все сервисы одновременно в отдельных контейнерах:
- **RabbitMQ** (сервер очередей) - контейнер `rabbitmq-container`
- **PostgreSQL** (база данных) - контейнер `postgres-container`
- **Sender** (отправка сообщений) - контейнер `sender-container`
- **Reader** (чтение сообщений и запись в БД) - контейнер `reader-container`.