Я хочу иметь службу с предварительно настроенным mongodb на конвейерах bitbucket.
Проблема заключается в том, что mongodb должен быть настроен с аутентификацией TSL / SSL, для которой требуются файлы .pem с сертификатом и ключом.внутри контейнера.
Вот пример файла конфигурации, который должен быть передан в Docker-контейнер:
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017
Как вы можете видеть из файла конфигурации выше, мне также нужно передать* .pem файлы в контейнер, чтобы mongodb мог выбрать их во время запуска.
CMD ["mongod", "--config", "/directory/with/config/mongodb.conf"]
Итак, если мы суммируем все, что я сказал выше, мне понадобится простой механизм передачи файлов в докер-контейнер по конвейерам битового сегмента.
ОБНОВЛЕНИЕ: Обходной путь, который я сейчас использую для получения файлов .pem внутри контейнера, но он работает только локально:
У меня есть следующий файл Docker для mongodbservice:
FROM mongo
VOLUME ["/data/db"]
VOLUME ["/share"]
# Define working directory.
WORKDIR /data
EXPOSE 27017
EXPOSE 28017
RUN touch /var/log/mongodb.log
ENTRYPOINT ["mongod", "--sslMode", "requireSSL", "--sslCAFile", "/share/rootCA.pem", "--sslPEMKeyFile", "/share/mongodb.pem", "--sslPEMKeyPassword", "myepicpassword", "--logpath", "/var/log/mongodb.log", "--bind_ip_all"]
Вот так я запускаю его локально:
docker run --name testing -d -v ~/docker:/share -p 27017:27017 -p 28017:28017 myrepo:mongodb-service
Так что я просто монтирую каталог хоста в каталог контейнера, tВ каталоге хоста находятся все ключи.