Mongod를 실행할 때 docker-compose에서 command로 실행하는것과 command에서 script를 통해서 실행하는 것이 차이가 있는지 없는지 알아보자.
사실상 이 둘은 같다고 생각한다.
version: "3.0"
services:
test_container:
image: debian:10-slim
volumes:
- "./test:/test"
command: echo "TEST"
version: "3.0"
services:
test_container:
image: debian:10-slim
volumes:
- "./test:/test"
command: bash -c "/test/test.sh"
#test.sh
echo "TEST"
그러니까 command는 container가 시작되고 나서 실행되는 첫 명령어 라인이니까 당연한 것이다.
하지만 mongod를 tls로 실행시켰을 때 에러가 발생한다.
...
command: mongod --auth --keyFile /opt/keyfile/mongodb-keyfile --replSet demo-replica-set-test \
--tlsMode requireTLS --tlsCAFile /ssl/ca.pem --tlsCertificateKeyFile /ssl/mongodb.pem
...
위의 command대로 실행하면 잘 실행된다.
하지만 위의 command를 initialize.sh에 저장하고 docker-compose를 한다.
...
command: bash -c "/scripts/Initialize.sh"
...
# Initialize.sh
mongod --auth --keyFile /opt/keyfile/mongodb-keyfile --replSet demo-replica-set-test \
--tlsMode requireTLS --tlsCAFile /ssl/ca.pem --tlsCertificateKeyFile /ssl/mongodb.pem
그리고 다음 명령어를 실행한다.
docker exec mongo-primary mongo -u "root" -p "1234" --tls --tlsCAFile \
./ssl/ca.pem --tlsCertificateKeyFile ./ssl/mongodb.pem --tlsAllowInvalidHostnames
그러면 아래와 같은 에러가 뜬다.
분명히 바뀐거는 command에서 bash script로 mongod 명령어를 실행시켰나, 아니면 그냥 바로 command 라인에 mongod 명령어를 실행시켰냐는 차이인데 이렇게 에러가 뜬다.
아직 해결 못함 ㅜㅜㅜ