#node.js #azure #docker #express #containers
#node.js #azure #docker #экспресс #контейнеры
Вопрос:
Есть ли в Azure способ сопоставить порты с контейнером Docker? У меня есть образ, который я создал с помощью Node Express, который принимает переменную среды, чтобы определить, какой порт прослушивать. В Azure использование любого порта, превышающего 1024, кажется, работает нормально, но ниже этого процесс вызывает ошибку uncaughtException. Очевидно, что я хотел бы использовать порт 80 (и 443) для производства. Я хотел бы сопоставить порт 80 с настроенным портом в моем контейнере (например, docker run -стр. 80: 3000. Как я могу выполнить это в Azure.
Ошибка, возникающая при сопоставлении с портом 80, является:
server port is 80
{ Error: listen EACCES: permission denied 0.0.0.0:80
at Server.setupListenHandle [as _listen2] (net.js:1241:19)
at listenInCluster (net.js:1306:12)
at Server.listen (net.js:1394:7)
at Function.listen (/home/node/app/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/node/app/dist/app.js:34:5)
at Module._compile (internal/modules/cjs/loader.js:805:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:816:10)
at Module.load (internal/modules/cjs/loader.js:672:32)
at tryModuleLoad (internal/modules/cjs/loader.js:612:12)
at Function.Module._load (internal/modules/cjs/loader.js:604:3)
code: 'EACCES',
errno: 'EACCES',
syscall: 'listen',
address: '0.0.0.0',
port: 80 }
Заранее благодарю вас за помощь!
Комментарии:
1. Какую службу Azure вы используете? Виртуальная машина Azure или экземпляр контейнера Azure?
Ответ №1:
Уверен, что это еще не поддерживается, вы можете проголосовать за эту функцию здесь.
Кроме того, просматривая документы, кажется, что порт 80 должен работать просто отлично (см. Этот пример).
Комментарии:
1. Я также получаю ошибки отказа в разрешении при попытке запустить службу на порту 80 в экземпляре контейнера Azure. Метод проб и ошибок показал, что первый номер порта, который работает, равен 1024.. все порты, указанные ниже, приводят к отказу в разрешении. Я думаю, что это проблема Linux, а не один из экземпляров контейнера Azure? Только root может привязываться к портам ниже 1024.
2. В Linux порты ниже 1024 являются привилегированными портами. То, что вы делаете внутри контейнера, должно выполняться с правами администратора или порт должен быть явно разрешен. Лучшим способом решить эту проблему было бы сопоставление порта контейнера с внешним портом, как это делает docker, но, похоже, az еще не
3. По запросу кто-то утверждает, что он поддерживается сейчас, но я не смог выяснить, в какой версии или оболочке: feedback.azure.com/forums/602224-azure-container-instances /…