본문 바로가기

Docker

(미해결)(에러) 2 way of Mongod command in docker-compose

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 명령어를 실행시켰냐는 차이인데 이렇게 에러가 뜬다.

아직 해결 못함 ㅜㅜㅜ