我习惯于使用 Docker、Express 框架和 https 包在 DigitalOcean 服务器上部署 HTTPS 节点应用程序,如下所示:
const https = require('https');
const app = express();
// ...
const ssl = {
key: fs.readFileSync(process.env.PRIVATE_KEY),
cert: fs.readFileSync(process.env.CERT),
ca: fs.readFileSync(process.env.CHAIN),
};
const server = https.createServer(ssl, app);
server.listen({ port }, () => {
// ...
});
我的应用程序位于 Docker 容器内,但当我这样做时,我会使用“v”选项公开 Droplet 上的证书码头运行, 像这样:
-v /etc/letsencrypt/:/etc/letsencrypt
最后,我的 Docker 容器传递了环境变量,以便我的 Node 应用程序可以知道各种证书文件的路径。例如,
CHAIN=/etc/letsencrypt/live/mydomain.com/chain.pem
现在,我的 Node 应用程序可以读取证书并使用它们创建 HTTPS 服务器。
我不知道这个设置是否理想,但效果很好。
现在,我想知道如何使用DigitalOcean应用平台.
到目前为止,我所做的是:
- 更改我的域的 DNS 以指向 DigitalOcean 的名称服务器
- 按照以下过程为此域创建了 DO 管理的 Let's Encrypt 证书:https://www.digitalocean.com/docs/accounts/security/certificates/ https://www.digitalocean.com/docs/accounts/security/certificates/
- 创建了一个 DO 应用程序,将我的应用程序定义为service
但我无法让它与证书一起使用,因此我的 HTTPS 应用程序无法工作。
这里有人有想法吗?