Skip to content

Commit 8e6541a

Browse files
authored
Merge pull request #491 from boostcampwm-2024/fix/rabbitmq-docker-compose
🐛 fix: rabbitmq 실행 시 user가 생성되지 않는 버그 수정
2 parents 9befee8 + def02a6 commit 8e6541a

File tree

5 files changed

+58
-12
lines changed

5 files changed

+58
-12
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# RabbitMQ가 실행 중인지 확인
5+
rabbitmq-diagnostics ping > /dev/null 2>&1 || exit 1
6+
7+
# definitions.json의 import 성공 여부 확인
8+
# ⚠️ 주의: 아래의 exchange 이름(email, crawling)은 definitions.json 파일의 exchanges 항목과 반드시 동기화되어야 합니다.
9+
# definitions.json에서 exchange를 추가/삭제할 경우, 이 스크립트도 반드시 함께 수정해야 합니다.
10+
rabbitmqctl list_exchanges name | grep -q "^email$" || exit 1
11+
rabbitmqctl list_exchanges name | grep -q "^crawling$" || exit 1
12+
13+
exit 0

docker-compose/docker-compose.infra.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ services:
6666
# RabbitMQ 서비스
6767
rabbitmq:
6868
image: rabbitmq:4.1-management
69+
user: "999:999"
6970
networks:
7071
- Denamu
7172
ports:
@@ -77,12 +78,14 @@ services:
7778
volumes:
7879
- denamu-rabbitmq:/var/lib/rabbitmq
7980
- ./definitions.json:/etc/rabbitmq/definitions.json:ro
80-
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
81+
- ./import-definitions.sh:/etc/rabbitmq/import-definitions.sh:ro
82+
- ./check-rabbitmq-ready.sh:/etc/rabbitmq/check-rabbitmq-ready.sh:ro
83+
entrypoint: ["/bin/sh", "/etc/rabbitmq/import-definitions.sh"]
8184
healthcheck:
82-
test: [ "CMD", "rabbitmq-diagnostics", "ping" ]
83-
interval: 30s
84-
timeout: 10s
85-
retries: 3
85+
test: [ "CMD", "/bin/sh", "/etc/rabbitmq/check-rabbitmq-ready.sh" ]
86+
interval: 10s
87+
timeout: 5s
88+
retries: 5
8689
start_period: 40s
8790
profiles:
8891
- was-dev

docker-compose/docker-compose.prod.infra.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ services:
7878
# RabbitMQ 서비스
7979
rabbitmq:
8080
image: rabbitmq:4.1-management
81+
user: "999:999"
8182
networks:
8283
- Denamu
8384
ports:
@@ -88,12 +89,14 @@ services:
8889
volumes:
8990
- denamu-rabbitmq:/var/lib/rabbitmq
9091
- ./definitions.json:/etc/rabbitmq/definitions.json:ro
91-
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
92+
- ./import-definitions.sh:/etc/rabbitmq/import-definitions.sh:ro
93+
- ./check-rabbitmq-ready.sh:/etc/rabbitmq/check-rabbitmq-ready.sh:ro
94+
entrypoint: [ "/bin/sh", "/etc/rabbitmq/import-definitions.sh" ]
9295
healthcheck:
93-
test: [ "CMD", "rabbitmq-diagnostics", "ping" ]
94-
interval: 30s
95-
timeout: 10s
96-
retries: 3
96+
test: [ "CMD", "/bin/sh", "/etc/rabbitmq/check-rabbitmq-ready.sh" ]
97+
interval: 10s
98+
timeout: 5s
99+
retries: 5
97100
start_period: 40s
98101

99102
# Redis Metrics
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# RabbitMQ 서버를 백그라운드로 시작
5+
docker-entrypoint.sh rabbitmq-server &
6+
RABBITMQ_PID=$!
7+
8+
# RabbitMQ가 완전히 준비될 때까지 대기(1분 타임아웃)
9+
MAX_WAIT=20
10+
COUNT=0
11+
until rabbitmqctl list_users >/dev/null 2>&1; do
12+
COUNT=$((COUNT + 1))
13+
if [ $COUNT -ge $MAX_WAIT ]; then
14+
echo "RabbitMQ failed to start within 60 seconds" >&2
15+
exit 1
16+
fi
17+
sleep 3
18+
done
19+
20+
# definitions.json import
21+
if rabbitmqctl import_definitions /etc/rabbitmq/definitions.json; then
22+
echo "definitions.json imported successfully."
23+
else
24+
echo "Failed to import definitions.json" >&2
25+
exit 1
26+
fi
27+
28+
# 포그라운드로 RabbitMQ 프로세스 유지
29+
wait $RABBITMQ_PID

docker-compose/rabbitmq.conf

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)