개발환경
OS: Windows 11
* [Docker]RabbitMQ, Redis 설치, Docker Compose 실습에서 이어지는 글입니다.
-> RabbitMQ를 먼저 구동시켜보고 성공 시 Redis를 추가해서 구동시켜볼 예정
C:\Users\letsj\docker-compose.yml 실행 (실행하려는 컨테이너들이 있는 경로)
→ 오류남…
오류내용
ERROR: for compose-training Cannot start service compose-training: driver failed programming external connectivity on endpoint letsj_compose-training_1 (dee57ae3d957030415cdf2b5a776d99ac7f4e28948516f226b519eb437433c4b): Bind for 0.0.0.0:15672 failed: **port is already allocated**
ERROR: Encountered errors while bringing up the project.
port is already allocated: 15672 포트가 이미 할당되었다…? 흠…
→ yml의 port를 지우고 실행시켜 봄.
telnet으로 접속 확인
→ 성공한 것 같이 보이지만 웹 접속이 안됨..
아무래도 기존에 생성해놓은 rabbitmq:management의 포트와 겹쳐서 안되는 것 같음.
일단 기존 컨테이너를 완전히 종료시키고, yml에도 다시 포트를 명시하고 실행시켜봄.
version: "3"
services:
compose-training:
image: rabbitmq:management
ports:
- 5672:5672
- 15672:15672
- 25672:25672
드디어 성공!!~!!
yml 파일에 서비스 추가 및 수정
version: "3"
services:
compose-rmq:
image: rabbitmq:management
ports:
- 5672:5672
- 15672:15672
- 25672:25672
compose-redis:
image: redis
command: -it --network redis-net --rm redis:latest redis-cli -h redis
container_name: redis
hostname: redis
labels:
- "name=redis"
- "mode=standalone"
ports:
- 6379:6379
→ rabbitmq는 compose-rmq로, redis는 compose-redis로.
→ command
: 기본 예제 실습의 커맨드를 그대로 씀.
→ labels
: 이미지 구성이나 라이센스 기록, 컨테이너, 볼륨 및 네트워크간의 관계에 주석을 달거나 할때에 사용.
* 참고: https://basketdeveloper.tistory.com/85
컨테이너 중지
docker container stop [container id]
yml 실행
→ 오류남
WARNING: Found orphan containers (letsj_compose-training_1) for this project.
→ 기존에 저장된 yml 내용을 찾을 수 없음.
for redis Cannot create container for service compose-redis: Conflict. The container name "/redis" is already in use by container
→ 컨테이너명 충돌.
→ yml의 container_name을 redis에서 redis2로 수정해봄
compose-redis:
image: redis
command: -it --network redis-net --rm redis:latest redis-cli -h redis
container_name: redis2
hostname: redis
labels:
- "name=redis"
- "mode=standalone"
ports:
- 6379:6379
다시 실행
docker-compose up --remove-orphans
—remove-orphans
: 정의되지 않은 서비스에 대한 컨테이너 제거→ orphan 경고 사라짐.
→ redis2 -it 옵션 오류.
→ 해당 옵션 제거 후 재실행
컴포즈 종료
docker-compose down
재실행
엥?
재실행
이번엔 network “redis-net”
이 잘못됐다고 함.
→ 옵션 다 지우고 재실행해봄
compose-redis:
image: redis
ports:
- 6379:6379
되긴 됨..
cli 접속
docker exec -it ***letsj_compose-redis_1*** redis-cli
컨테이너 명은 docker container ps -a
로 조회해보거나…
애초에 yml 파일에서 container_name
을 지정해주면 될듯
정상접속 확인 완.
휴.. 힘들었다