如何在Docker secrets中设置密码短语?

如何在Docker secrets中设置密码短语?,docker,docker-secrets,Docker,Docker Secrets,我在js中有以下代码: var options = { passphrase: process.env.APP_PASSPHRASE, secureProtocol: "TLSv1_2_method", key: fs.readFileSync(__dirname +'/key.pem', "utf8"), cert: fs.readFileSync(__dirname + '/cert.pem', "utf8"

我在js中有以下代码:

var options = {
   passphrase: process.env.APP_PASSPHRASE,
   secureProtocol: "TLSv1_2_method",
   key: fs.readFileSync(__dirname +'/key.pem', "utf8"),
   cert: fs.readFileSync(__dirname + '/cert.pem', "utf8"),
   ca: fs.readFileSync(__dirname + '/ca.pem', "utf8")
};

var https_server = https.createServer(options, server);
目前,我们使用从env
APP\u passphrase
获取密码短语。现在我们的应用程序正在使用Docker,在Docker文件中,您必须更新密码短语:

ENV APP_PASSPHRASE=<INSERT PASSPHRASE HERE>
ENV APP\u密码短语=

我听说Docker支持使用机密的私人信息。我阅读了文档,但我不知道如何使用Docker机密为密码短语添加支持。如果有人能解释我应该如何为该密码短语添加一个秘密,我将非常高兴。

秘密仅适用于Docker Swarm

要创建秘密,请执行以下操作:

printf <secret> | docker secret create <secret> -
printf | docker秘密创建-
要使用机密,它将在文件
/run/secrets/
中的容器中可用:

docker服务创建--名称--机密

我如何在Dockerfile中使用它?在构建过程中,/run/secrets/not(不在Dockerfile中)中的容器中有秘密。那么我应该如何获得秘密呢?我应该进入js代码吗?我认为应用程序不应该知道它正在Docker上运行。是的,你应该使用密码进入js代码:fs.readFileSync()。应用程序不知道它在docker中,它只是读取文件系统上的一个文件,就像您读取证书一样。我个人通常使用机密将证书传递到我的应用程序中。但是该路径是指向Docker机密的路径,因此它确实知道它运行Docker。我希望在没有docker的情况下仍能运行应用程序。所以听起来我必须添加一个
if-else
语句来检查我是否在docker中。难道没有更好的办法吗?
docker service  create --name <name> --secret <secret> <image>