我需要与容器共享我的docker计算机证书,因此我使用了卷。不幸的是,它似乎不符合我的预期,因为容器找不到此文件。
这是我的Linux(Ubuntu)计算机上存在的问题。在我的macOS系统上,一切看起来都很好。我的方法正常工作并且文件存在。我试图修改路径,但没有帮助。
start-service.sh
docker build -t api-gateway-service .
docker run --name api-gateway-service -v /<absolute path to .docker>/machine/machines/manager1:/certs --net='host' --env-file env -d api-gateway-service
env
DOCKER_CERT_PATH=/certs
config.js
const certDir = process.env.DOCKER_CERT_PATH
const dockerSettings = {
protocol: 'https',
host: machine.substr(machine.indexOf(':', 0) + 3, machine.indexOf(':', 6) - 6),
port: parseInt(machine.substr(-4), 10),
checkServerIdentity: false,
ca: fs.readFileSync(certDir + '/ca.pem'),
cert: fs.readFileSync(certDir + '/cert.pem'),
key: fs.readFileSync(certDir + '/key.pem'),
version: 'v1.25'
}
我创建了容器和应用程序,试图从安装的卷中获取证书。但是随后抛出错误“错误:ENOENT:没有这样的文件或目录,请打开'/certs/ca.pem'”,因此出现了问题。