Docker - Publi sh локальный HTTPS-сервер от контейнера к хосту - PullRequest
0 голосов
/ 31 января 2020

Я создал свой 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.

Я бы сейчас опубликовал sh https://localhost:9010 контейнера, связывающего его с https://localhost:9010 хоста docker. Я использовал следующую команду:

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

Когда я запускаю curl https://localhost:9010 с хоста docker, моего локального компьютера, я получаю эту ошибку:

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

I попытался выполнить docker do c Защитить Docker сокет демона , но ничего.

Какие шаги следует выполнить, чтобы правильно опубликовать sh сервер узла https в контейнер?

спасибо

Ответы [ 2 ]

1 голос
/ 31 января 2020

Как я понимаю, есть некоторая опечатка с командой docker:

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

вам нужно пробел () между 9010 и --detach

0 голосов
/ 01 февраля 2020

Как указано David Maze Я изменил хост сервера моего Node.js сервера, запущенного в контейнере docker, с 127.0.0.1 на 0.0.0.0.

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

Таким образом, теперь я могу связаться с моим docker хостом сервером в контейнере docker через https://localhost: 9010 / .

...