docker를 이용해서 mongo replicaset을 만들어 migration을 하는 과정 중 initialize 하려고 mongo를 들어가려는 순간
docker-compose exec demo-mongo-primary mongo -u "root" -p "1234"
이러한 에러가 나타났다.
일단 docker-compose.yaml에서 networks
networks:
demo-replica-set:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.10.99.0/24
default:
external: false
그리고 docker-compose up을 하면
아주 잘떠있는 것을 확인할 수 있다.
하지만 이러한 mongo replicaset은 tls를 쓰지 않기에 tls 인증서를 넣어주기 위해 새로 replicaset을 만든다음 initialize해주고 mongo dump, restore을 통해 migration을 진행할 계획이였다.
여기서 새로운 docker-compose-mongo.yaml을 만든다음 networks를 다른 subnet으로 만들어준다.
networks:
demo-replica-set-test:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.10.96.0/24
default:
external: false
단순히 숫자와 이름만 바꿔줬고, docker-compose -f docker-compose-mongo.yaml up을 했다.
아주 잘 떠있다.
docker-compose exec demo-mongo-primary-test mongo -u "root" -p "1234"
그리고 mongo shell로 들어가려고 실행시켰더니
다음과 같이 warning이 뜨면서 mongo로 들어가지지 않는다.
해석해보자면 demo-replica-set이라는 network에 의해서 어떠한 network가 정의되어있는데 쓰여지지 않았다.
즉, demo-replica-set network는 지금 쓰여져 있고, 어떠한 이유에서인지 모르지만, demo-replica-set-test network가 정의되어있지만 쓰여지지 않아서 이러한 에러가 뜨는 것 같다.
여러 구글링을 해본 결과, 단순히 docker-compose 버전이 낮아서 그렇다고 한다.
그러니까 docker-compose 내부에서도 이러한 에러가 고쳐지지 않다가 1.6.0 ->1.6.2로 넘어가는 시점에 고쳐졌다고 한다.
docker-compose를 다시 v2.2.2로 upgrade하고(참고로 upgrade는 curl로 docker-compose가 아니라 다른 이름으로 받아온다음 docker-compose로 바꾸면 된다.) 다시 실행해봤더니 된다.