Docker语言 - 将本地主机 HTTPS 服务器从容器发布到主机



我已经构建了我的 docker 映像来在本地运行 HTTPS Node.js 服务器,其中包含所有必需且配置良好的 TLS 证书:

...
var port = config.port || 9010, https;
var tlsOptions = {
pfx: fs.readFileSync('./tls/keystore.p12'),
passphrase: ******,
honorCipherOrder: true,
secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3    
};
try {
https = require('https').Server(tlsOptions, app);
} catch (e) {
console.error('Fail to start HTTPS server ' + e);
}
...

我已经使用curl成功地在容器内部和主机中测试了它。

我现在将发布容器https://localhost:9010与 docker 主机https://localhost:9010绑定的容器。我使用了以下命令:

docker container run --publish 9010:9010 --detach --name https_server_container https_server:1.0

当我从 docker 的主机(我的本地机器(运行 curlhttps://localhost:9010时,我收到此错误:

curl: (35) schannel: failed to receive handshake, SSL/TLS connection failed

我试图遵循 docker 文档保护 Docker 守护程序套接字,但什么都没有。

我应该遵循哪些步骤才能正确发布容器中的 https 节点服务器?

谢谢

在我看来,docker 命令有一些错别字:

docker container run --publish 9010:9010 --detach --name https_server_container https_server:1.0

你需要在 9010 和 --detach 之间空格 ( (

如 David Maze 所示,我将 Node.js 在 docker 容器中运行的服务器的服务器主机从127.0.0.1更改为0.0.0.0

...
https.listen(port, '0.0.0.0', function() {
...
});

通过这种方式,我现在可以通过 https://localhost:9010/从我的 docker 主机访问 docker 容器中的服务器。

最新更新