我想在Bitbucket管道上使用预先配置的mongodb提供服务。
问题在于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"]
因此,如果我们总结以上所述,我需要一种简单的机制,将文件通过bitbucket管道传递到docker容器。
更新: 我现在使用的解决方法是在容器内获取.pem文件,但它仅在本地有效:
我为mongodb服务使用以下Dockerfile:
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
所以我只是将主机目录挂载到容器的目录中,该主机目录包含所有键。