210 RabbitMq in Docker - chempkovsky/CS82ANGULAR GitHub Wiki

Notes

  • Read the article
    • Pull RabbitMq
      • docker pull rabbitmq
    • hostname
      • docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3
    • default user and password
      • docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management
    • default vhost
      • docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management
    • Management Plugin
      • docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3-management
      • docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management
    • We can export ready-to-use RabbitMq definitions to a file

Steps required to accomplish the task

  • in the article 045 Install and configure RabbitMq we defined additional virtual host, admin user...
  • Our goal is to import these settings into the docker image.
  • create a working folder where all files below will be saved

rabbitmq conf

  • create rabbitmq.conf file with the content as follows
listeners.tcp.default   = 5672
management.tcp.port     = 15672
load_definitions        = /etc/rabbitmq/definitions.json
  • load_definitions=... is the only line that matters to us

definitions json

rabbitmqctl export_definitions C:\tmp\definitions.json --format json
  • copy definitions.json into the working folder
Click to show the file
{
    "bindings": [
        {
            "arguments": {},
            "destination": "PhbkDivisionViewExtForLkUpMsg",
            "destination_type": "exchange",
            "routing_key": "",
            "source": "LpPhBkViews.PhBk:IPhbkDivisionViewExtForLkUpMsg",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "destination": "PhbkEmployeeViewExtForLkUpMsg",
            "destination_type": "exchange",
            "routing_key": "",
            "source": "LpPhBkViews.PhBk:IPhbkEmployeeViewExtForLkUpMsg",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "destination": "PhbkPhoneViewExtForLkUpMsg",
            "destination_type": "exchange",
            "routing_key": "",
            "source": "LpPhBkViews.PhBk:IPhbkPhoneViewExtForLkUpMsg",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "destination": "MassTransit:Fault",
            "destination_type": "exchange",
            "routing_key": "",
            "source": "MassTransit:Fault--LpPhBkViews.PhBk:IPhbkDivisionViewExtForLkUpMsg--",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "destination": "PhbkDivisionViewExtForLkUpMsg",
            "destination_type": "queue",
            "routing_key": "",
            "source": "PhbkDivisionViewExtForLkUpMsg",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "destination": "PhbkDivisionViewExtForLkUpMsg_error",
            "destination_type": "queue",
            "routing_key": "",
            "source": "PhbkDivisionViewExtForLkUpMsg_error",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "destination": "PhbkEmployeeViewExtForLkUpMsg",
            "destination_type": "queue",
            "routing_key": "",
            "source": "PhbkEmployeeViewExtForLkUpMsg",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "destination": "PhbkPhoneViewExtForLkUpMsg",
            "destination_type": "queue",
            "routing_key": "",
            "source": "PhbkPhoneViewExtForLkUpMsg",
            "vhost": "phbkhost"
        }
    ],
    "exchanges": [
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "MassTransit:Fault--LpPhBkViews.PhBk:IPhbkDivisionViewExtForLkUpMsg--",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "LpPhBkViews.PhBk:IPhbkDivisionViewExtForLkUpMsg",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkDivisionViewExtForLkUpMsg",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkPhoneViewExtForLkUpMsg",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkEmployeeViewExtForLkUpMsg",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "LpPhBkViews.PhBk:IPhbkEmployeeViewExtForLkUpMsg",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkDivisionViewExtForLkUpMsg_error",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "LpPhBkViews.PhBk:IPhbkPhoneViewExtForLkUpMsg",
            "type": "fanout",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "MassTransit:Fault",
            "type": "fanout",
            "vhost": "phbkhost"
        }
    ],
    "global_parameters": [],
    "parameters": [
        {
            "component": "vhost-limits",
            "name": "limits",
            "value": {
                "max-connections": 25,
                "max-queues": 30
            },
            "vhost": "phbkhost"
        }
    ],
    "permissions": [
        {
            "configure": ".*",
            "read": ".*",
            "user": "admin",
            "vhost": "phbkhost",
            "write": ".*"
        },
        {
            "configure": ".*",
            "read": ".*",
            "user": "guest",
            "vhost": "/",
            "write": ".*"
        },
        {
            "configure": ".*",
            "read": ".*",
            "user": "admin",
            "vhost": "/",
            "write": ".*"
        }
    ],
    "policies": [],
    "queues": [
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkDivisionViewExtForLkUpMsg_error",
            "type": "classic",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkPhoneViewExtForLkUpMsg",
            "type": "classic",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkDivisionViewExtForLkUpMsg",
            "type": "classic",
            "vhost": "phbkhost"
        },
        {
            "arguments": {},
            "auto_delete": false,
            "durable": true,
            "name": "PhbkEmployeeViewExtForLkUpMsg",
            "type": "classic",
            "vhost": "phbkhost"
        }
    ],
    "topic_permissions": [
        {
            "exchange": ".*",
            "read": ".*",
            "user": "admin",
            "vhost": "phbkhost",
            "write": ".*"
        },
        {
            "exchange": ".*",
            "read": ".*",
            "user": "admin",
            "vhost": "/",
            "write": ".*"
        }
    ],
    "users": [
        {
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "limits": {},
            "name": "admin",
            "password_hash": "ZKjNeIhvkK4QBuXcxpg+Yqbn1uTC7v05vQdbFucKr2IPKnQu",
            "tags": [
                "administrator"
            ]
        },
        {
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "limits": {},
            "name": "guest",
            "password_hash": "yYaWG9CVi8L74A2bXjfEdLbst5QCvmNrjrsojt1HyKZcCnz9",
            "tags": [
                "administrator"
            ]
        }
    ],
    "vhosts": [
        {
            "limits": [],
            "metadata": {
                "description": "Default virtual host",
                "tags": []
            },
            "name": "/"
        },
        {
            "limits": [
                [
                    "max-connections",
                    25
                ],
                [
                    "max-queues",
                    30
                ]
            ],
            "metadata": {
                "description": "",
                "tags": []
            },
            "name": "phbkhost"
        }
    ]
}

Dockerfile

  • create Dockerfile file with the content as follows
FROM rabbitmq:3-management
COPY definitions.json /etc/rabbitmq/definitions.json
COPY rabbitmq.conf /etc/rabbitmq/rabbitmq.conf

Docker compose yml

  • create Docker-compose.yml file with the content as follows
version: '3.9'

services:
  rabbit:
    build: .
    hostname: my-rabbit
    container_name: 'rabbitmq'
    environment:
      RABBITMQ_CONFIG_FILE: '/etc/rabbitmq/rabbitmq.conf'
    ports:
      - 5672:5672
      - 15672:15672

Create Docker Service

  • run the command
docker-compose -f "docker-compose.yml" up -d --build

Issue

  • Docker control panel (Docker Desktop for Windows) stops working after starting a service

    • Docker command line tool works!
  • We took the same issue with Docker-compose.yml as follows

    • with image: rabbitmq:3-management
version: '3.9'

services:
  rabbit:
    hostname: my-rabbit
    image: rabbitmq:3-management
    container_name: 'rabbitmq'
    environment:
      RABBITMQ_DEFAULT_USER=admin
      RABBITMQ_DEFAULT_PASS=admin
    ports:
      - 5672:5672
      - 15672:15672
  • We took the same issue with Docker-compose.yml as follows
    • with image: rabbitmq:3-management-alpine
version: '3.9'

services:
  rabbit:
    hostname: my-rabbit
    image: rabbitmq:3-management-alpine
    container_name: 'rabbitmq'
    environment:
      RABBITMQ_DEFAULT_USER=admin
      RABBITMQ_DEFAULT_PASS=admin
    ports:
      - 5672:5672
      - 15672:15672
  • We took the same issue with Docker-compose.yml as follows
    • with image: bitnami/rabbitmq:latest
    • bitnami
version: '3.10' 

services:
  rabbitmq:
    hostname: my-rabbit
    image: bitnami/rabbitmq:latest
    container_name: 'rabbitmq'
    environment:
      RABBITMQ_USERNAME: admin
      RABBITMQ_PASSWORD: admin
    ports:
      - 5672:5672
      - 15672:15672

Note

  • the only way to open containers data page via volumes
    • docker-compose -f "docker-compose.yml" up -d --build creates the volume
      • click Volumes
      • click In use

Final Docker Image

  • Create working folder
  • Copy definitions.json file in the working folder
  • Copy Dockerfile file in the working folder
  • Run the command in the windows terminal
docker build . -f Dockerfile -t rabbitmq-phn-bk
⚠️ **GitHub.com Fallback** ⚠️