Files
2026-09-04 16:30:37 +08:00

89 lines
2.9 KiB
YAML

services:
rabbitmq:
image: rabbitmq:3.13-management
container_name: ping-rabbitmq
restart: unless-stopped
hostname: ping-rabbitmq
environment:
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS: "-rabbit disk_free_limit 2147483648"
ports:
- target: 5672
published: ${RABBITMQ_AMQP_PORT:-5672}
protocol: tcp
host_ip: ${RABBITMQ_BIND_IP:-0.0.0.0}
- target: 15672
published: ${RABBITMQ_MANAGEMENT_PORT:-15672}
protocol: tcp
host_ip: ${RABBITMQ_BIND_IP:-0.0.0.0}
- target: 15692
published: ${RABBITMQ_PROMETHEUS_PORT:-15692}
protocol: tcp
host_ip: ${RABBITMQ_PROMETHEUS_BIND_IP:-0.0.0.0}
volumes:
- rabbitmq-data:/var/lib/rabbitmq
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
- ./enabled_plugins:/etc/rabbitmq/enabled_plugins:ro
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
networks:
- rabbitmq
rabbitmq-init:
image: curlimages/curl:latest
container_name: ping-rabbitmq-init
restart: "no"
depends_on:
rabbitmq:
condition: service_healthy
environment:
RABBITMQ_USER: ${RABBITMQ_INIT_USER:-guest}
RABBITMQ_PASS: ${RABBITMQ_INIT_PASS:-guest}
command:
- sh
- -ec
- |
base_url="http://rabbitmq:15672/api"
auth="$${RABBITMQ_USER}:$${RABBITMQ_PASS}"
until curl -fsS -u "$$auth" "$$base_url/overview" >/dev/null; do
sleep 2
done
curl -fsS -u "$$auth" -H "content-type: application/json" -X PUT \
"$$base_url/exchanges/%2F/ping_node" \
-d '{"type":"direct","durable":true,"auto_delete":false,"internal":false,"arguments":{}}'
curl -fsS -u "$$auth" -H "content-type: application/json" -X PUT \
"$$base_url/exchanges/%2F/ping_logs" \
-d '{"type":"direct","durable":true,"auto_delete":false,"internal":false,"arguments":{}}'
curl -fsS -u "$$auth" -H "content-type: application/json" -X PUT \
"$$base_url/queues/%2F/ping_dev_node_result" \
-d '{"durable":true,"auto_delete":false,"arguments":{}}'
curl -fsS -u "$$auth" -H "content-type: application/json" -X PUT \
"$$base_url/queues/%2F/master" \
-d '{"durable":true,"auto_delete":false,"arguments":{}}'
curl -fsS -u "$$auth" -H "content-type: application/json" -X PUT \
"$$base_url/queues/%2F/ping_logs_python" \
-d '{"durable":true,"auto_delete":false,"arguments":{}}'
curl -fsS -u "$$auth" -H "content-type: application/json" -X POST \
"$$base_url/bindings/%2F/e/ping_logs/q/ping_logs_python" \
-d '{"routing_key":"python","arguments":{}}'
networks:
- rabbitmq
networks:
rabbitmq:
name: ping-rabbitmq
driver: bridge
volumes:
rabbitmq-data: