{"id":28944792,"url":"https://github.com/topotun77/vk_tw","last_synced_at":"2026-05-06T02:37:17.891Z","repository":{"id":300085553,"uuid":"1004516519","full_name":"Topotun77/vk_tw","owner":"Topotun77","description":"Обмен данными между docker-контейнерами - docker-compose (Python, Docker, docker-compose, PostgreSQL, RabbitMQ)","archived":false,"fork":false,"pushed_at":"2025-06-19T19:13:21.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-19T20:26:30.544Z","etag":null,"topics":["docker","docker-compose","postgresql","python","rabbitmq"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Topotun77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-18T18:43:58.000Z","updated_at":"2025-06-19T19:13:25.000Z","dependencies_parsed_at":"2025-06-19T20:26:39.239Z","dependency_job_id":"d4ebbb4e-00c6-4e53-b1e0-7127eff1a7ad","html_url":"https://github.com/Topotun77/vk_tw","commit_stats":null,"previous_names":["topotun77/vk_tw"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Topotun77/vk_tw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Fvk_tw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Fvk_tw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Fvk_tw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Fvk_tw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Topotun77","download_url":"https://codeload.github.com/Topotun77/vk_tw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Fvk_tw/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261427940,"owners_count":23156742,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","postgresql","python","rabbitmq"],"created_at":"2025-06-23T06:30:32.028Z","updated_at":"2025-10-23T20:32:45.231Z","avatar_url":"https://github.com/Topotun77.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Обмен данными между docker-контейнерами (docker-compose)\n\n#### Первый скрипт:\n\n• публикует в очередь `RabbitMQ` каждые 5 секунд любое сообщение\n\n#### Второй скрипт:\n\n• читает из очереди `RabbitMQ` эти сообщения и записывает в таблицу БД `PostgreSQL`  \n• выводит лог текста сообщения в docker контейнер (время получения, текст сообщения)  \n• каждые 30 секунд выводит кол-во строк в таблице `PostgreSQL`  \n  \nСтэк развернуть в docker контейнерах через docker-compose (1 и 2 скрипты, `RabbitMQ`, `PostgreSQL`). \nВ образах не должны быть чувствительных данных (креды подключения к `RabbitMQ`). Все чувствительные \nданные выносятся в `.env` и подключаются через mount в контейнеры. Контейнеры работаю в своей \nсобственной docker сети.\n\n---\n\nВ процессе выполнения скриптов ведется логирование. Пример записей в журнале:\n```\nSENDER --\u003e | 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)\nSENDER --\u003e | 2025-06-18 18:39:25,310 | INFO | pika.adapters.utils.io_services_utils | Socket connected: \u003csocket.socket fd=8, family=2, type=1, proto=6, laddr=('172.19.0.4', 40588), raddr=('172.19.0.3', 5672)\u003e\nSENDER --\u003e | 2025-06-18 18:39:25,310 | INFO | pika.adapters.utils.connection_workflow | Streaming transport linked up: (\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7fcc246e8470\u003e, _StreamingProtocolShim: \u003cSelectConnection PROTOCOL transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7fcc246e8470\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e).\nSENDER --\u003e | 2025-06-18 18:39:25,322 | INFO | pika.adapters.utils.connection_workflow | AMQPConnector - reporting success: \u003cSelectConnection OPEN transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7fcc246e8470\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e\nSENDER --\u003e | 2025-06-18 18:39:25,322 | INFO | pika.adapters.utils.connection_workflow | AMQPConnectionWorkflow - reporting success: \u003cSelectConnection OPEN transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7fcc246e8470\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e\nSENDER --\u003e | 2025-06-18 18:39:25,323 | INFO | pika.adapters.blocking_connection | Connection workflow succeeded: \u003cSelectConnection OPEN transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7fcc246e8470\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e\nSENDER --\u003e | 2025-06-18 18:39:25,323 | INFO | pika.adapters.blocking_connection | Created channel=1\nSENDER --\u003e | 2025-06-18 18:39:25,327 | INFO | internal_log | Отправлено сообщение: \"Сообщение #1 отправлено 2025-06-18 18:39:25.327714\"\nSENDER --\u003e | 2025-06-18 18:39:30,328 | INFO | internal_log | Отправлено сообщение: \"Сообщение #2 отправлено 2025-06-18 18:39:30.328046\"\nSENDER --\u003e | 2025-06-18 18:39:36,198 | INFO | internal_log | Отправлено сообщение: \"Сообщение #3 отправлено 2025-06-18 18:39:36.198377\"\nSENDER --\u003e | 2025-06-18 18:39:41,199 | INFO | internal_log | Отправлено сообщение: \"Сообщение #4 отправлено 2025-06-18 18:39:41.198896\"\nSENDER --\u003e | 2025-06-18 18:39:46,199 | INFO | internal_log | Отправлено сообщение: \"Сообщение #5 отправлено 2025-06-18 18:39:46.199375\"\n--\u003e 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)\n--\u003e READER | 2025-06-18 18:39:50,675 | INFO | pika.adapters.utils.io_services_utils | Socket connected: \u003csocket.socket fd=9, family=2, type=1, proto=6, laddr=('172.19.0.5', 33616), raddr=('172.19.0.3', 5672)\u003e\n--\u003e READER | 2025-06-18 18:39:50,675 | INFO | pika.adapters.utils.connection_workflow | Streaming transport linked up: (\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7f4199c00440\u003e, _StreamingProtocolShim: \u003cSelectConnection PROTOCOL transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7f4199c00440\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e).\n--\u003e READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.utils.connection_workflow | AMQPConnector - reporting success: \u003cSelectConnection OPEN transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7f4199c00440\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e\n--\u003e READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.utils.connection_workflow | AMQPConnectionWorkflow - reporting success: \u003cSelectConnection OPEN transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7f4199c00440\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e\n--\u003e READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.blocking_connection | Connection workflow succeeded: \u003cSelectConnection OPEN transport=\u003cpika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x7f4199c00440\u003e params=\u003cConnectionParameters host=rabbit port=5672 virtual_host=/ ssl=False\u003e\u003e\n--\u003e READER | 2025-06-18 18:39:50,678 | INFO | pika.adapters.blocking_connection | Created channel=1\n--\u003e READER | 2025-06-18 18:39:50,681 | INFO | internal_log | Получено сообщение: \"Сообщение #1 отправлено 2025-06-18 18:39:25.327714\"\n--\u003e READER | 2025-06-18 18:39:50,711 | INFO | internal_log | Получено сообщение: \"Сообщение #2 отправлено 2025-06-18 18:39:30.328046\"\n--\u003e READER | 2025-06-18 18:39:50,714 | INFO | internal_log | Количество записей в БД: 35\n--\u003e READER | 2025-06-18 18:39:50,717 | INFO | internal_log | Получено сообщение: \"Сообщение #3 отправлено 2025-06-18 18:39:36.198377\"\n--\u003e READER | 2025-06-18 18:39:50,725 | INFO | internal_log | Получено сообщение: \"Сообщение #4 отправлено 2025-06-18 18:39:41.198896\"\n--\u003e READER | 2025-06-18 18:39:50,733 | INFO | internal_log | Получено сообщение: \"Сообщение #5 отправлено 2025-06-18 18:39:46.199375\"\nSENDER --\u003e | 2025-06-18 18:39:51,200 | INFO | internal_log | Отправлено сообщение: \"Сообщение #6 отправлено 2025-06-18 18:39:51.199870\"\n--\u003e READER | 2025-06-18 18:39:51,200 | INFO | internal_log | Получено сообщение: \"Сообщение #6 отправлено 2025-06-18 18:39:51.199870\"\nSENDER --\u003e | 2025-06-18 18:39:56,200 | INFO | internal_log | Отправлено сообщение: \"Сообщение #7 отправлено 2025-06-18 18:39:56.200424\"\n--\u003e READER | 2025-06-18 18:39:56,201 | INFO | internal_log | Получено сообщение: \"Сообщение #7 отправлено 2025-06-18 18:39:56.200424\"\nSENDER --\u003e | 2025-06-18 18:40:01,201 | INFO | internal_log | Отправлено сообщение: \"Сообщение #8 отправлено 2025-06-18 18:40:01.201051\"\n--\u003e READER | 2025-06-18 18:40:01,202 | INFO | internal_log | Получено сообщение: \"Сообщение #8 отправлено 2025-06-18 18:40:01.201051\"\nSENDER --\u003e | 2025-06-18 18:40:07,069 | INFO | internal_log | Отправлено сообщение: \"Сообщение #9 отправлено 2025-06-18 18:40:07.069624\"\n--\u003e READER | 2025-06-18 18:40:07,070 | INFO | internal_log | Получено сообщение: \"Сообщение #9 отправлено 2025-06-18 18:40:07.069624\"\nSENDER --\u003e | 2025-06-18 18:40:12,070 | INFO | internal_log | Отправлено сообщение: \"Сообщение #10 отправлено 2025-06-18 18:40:12.070215\"\n--\u003e READER | 2025-06-18 18:40:12,070 | INFO | internal_log | Получено сообщение: \"Сообщение #10 отправлено 2025-06-18 18:40:12.070215\"\nSENDER --\u003e | 2025-06-18 18:40:17,071 | INFO | internal_log | Отправлено сообщение: \"Сообщение #11 отправлено 2025-06-18 18:40:17.070788\"\n--\u003e READER | 2025-06-18 18:40:17,071 | INFO | internal_log | Получено сообщение: \"Сообщение #11 отправлено 2025-06-18 18:40:17.070788\"\n--\u003e READER | 2025-06-18 18:40:21,589 | INFO | internal_log | Количество записей в БД: 45\n```\n\n### Статистика RabbitMQ:\n![RabbitMQ](https://github.com/Topotun77/vk_tw/blob/master/ScreenShots/001.JPG?raw=true)\n\n### Лог sender:\n![Sender](https://github.com/Topotun77/vk_tw/blob/master/ScreenShots/002.JPG?raw=true)\n\n### Лог reader:\n![Reader](https://github.com/Topotun77/vk_tw/blob/master/ScreenShots/003.JPG?raw=true)\n\n\n## Для запуска приложения:\n1. **Файл с чувствительными данными `.env` поместить в корень проекта.**  \n2. **Запустите весь стэк командой:**  \n```\ndocker-compose up -d\n```\nЭто запустит все сервисы одновременно в отдельных контейнерах:\n\n- **RabbitMQ** (сервер очередей) - контейнер `rabbitmq-container`  \n- **PostgreSQL** (база данных) - контейнер `postgres-container`  \n- **Sender** (отправка сообщений) - контейнер `sender-container`  \n- **Reader** (чтение сообщений и запись в БД) - контейнер `reader-container`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopotun77%2Fvk_tw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftopotun77%2Fvk_tw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopotun77%2Fvk_tw/lists"}