Сопоставление портов с контейнерами Azure Docker

#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 /…