Сборка mongodb с SSL с помощью docker-compose - PullRequest
0 голосов
/ 16 апреля 2019

Проблема при подключении к mongoDB с SSL в Docker-контейнере

Я следовал рекомендациям по этой ссылке, затем пытался создать Docker-контейнер для Mongodb с SSL https://ritesh -yadav.github.io /tech / docker-instance-of-mongodb-with-ssl-support /
и
MongoDB Самоподписанное SSL-соединение: сбой проверки сертификата однорангового SSL-сертификата
Я хочусборка mongodb с помощью docker создайте с помощью этого файла конфигурации:

  • mongod.conf
net:
  ssl:
    CAFile: /home/mongodb/ssl/rootCA.pem
    PEMKeyFile: /home/mongodb/ssl/mongodb-server.pem
    mode: requireSSL
    disabledProtocols: "TLS1_0,TLS1_1"
    allowConnectionsWithoutCertificates: true
storage:
  journal:
    enabled: true
  • файл создания Docker
version: '3'
services:
    mongoDB:
        build: 
            context: .
        image: mongoDB:latest
        container_name: mongoDB
        restart: always
        environment:
            MONGO_INITDB_ROOT_USERNAME: admin
            MONGO_INITDB_ROOT_PASSWORD: pass
        ports:
            - "27017:27017"
  • файл докера
FROM mongo:3.4-xenial

COPY scripts /home/mongodb/scripts

COPY ssl /home/mongodb/ssl

COPY mongod.conf /home/mongodb

WORKDIR /home/mongodb

RUN ["chmod", "+x", "/home/mongodb/scripts/"]

RUN ["chmod", "+x", "/home/mongodb/scripts/run.sh"]

RUN ["chmod", "+x", "/home/mongodb/scripts/setup_user.sh"]

CMD ["/home/mongodb/scripts/run.sh"]

EXPOSE 27017
  • run.sh
#!/bin/bash

sleep 5

chown -R mongodb:mongodb /home/mongodb

nohup gosu mongodb mongod --dbpath=/data/db &

nohup gosu mongodb mongo admin --eval "help" > /dev/null 2>&1
RET=$?

while [[ "$RET" -ne 0 ]]; do
  echo "Waiting for MongoDB to start..."
  mongo admin --eval "help" > /dev/null 2>&1
  RET=$?
  sleep 2
done

bash /home/mongodb/scripts/setup_user.sh

gosu mongodb mongod --dbpath=/data/db --config mongod.conf -auth
  • setup_user.sh
#!/bin/bash

echo "************************************************************"
echo "Setting up users..."
echo "************************************************************"

# create root user
nohup gosu mongodb mongo db_name --eval "db.createUser({user: 'admin', pwd: 'pass', roles:[{ role: 'root', db: 'db_name' }]});"

# create app user/database
nohup gosu mongodb mongo db_name --eval "db.createUser({ user: 'user', pwd: 'pass', roles: [{ role: 'readWrite', db: 'db_name' }]});"

echo "************************************************************"
echo "Shutting down"
echo "************************************************************"
nohup gosu mongodb mongo admin --eval "db.shutdownServer();"

Когда я запускаю эту команду в Docker-контейнере после создания БД с помощью docker-compose up

mongo --port 27017 -u admin -p pass --authenticationDatabase db_name --ssl --sslPEMKeyFile /home/mongodb/ssl/mongodb-server.pem --sslCAFile /home/mongodb/ssl/rootCA.pem --host localhost

, тогда я получаю:

MongoDB shell version v3.4.20
connecting to: mongodb://localhost:27017/
2019-04-16T08:13:55.296+0000 E NETWORK  [thread1] SSL peer certificate validation failed: self signed certificate
2019-04-16T08:13:55.297+0000 E QUERY    [thread1] Error: socket exception [CONNECT_ERROR] for SSL peer certificate validation failed: self signed certificate :
connect@src/mongo/shell/mongo.js:240:13
@(connect):1:6
exception: connect failed

Я что-то не так сделал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...