Передача файлов конфигурации в Docker-контейнер по конвейерам bitbucket - PullRequest
0 голосов
/ 15 июня 2019

Я хочу иметь службу с предварительно настроенным 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В каталоге хоста находятся все ключи.

...