Предоставить порт 80 как пользовательский узел в образе Docker

Я написал сервер NodeJS, который пытаюсь запустить в контейнере Docker на основе node-alpine.

как Лучшие практики Docker Node я использую пользователя узла.

В настоящее время я использую порт 9999, и он работает нормально.

Вместо этого я хотел бы открыть порт 80 и 443, но не могу заставить его работать.

Быстрое решение - просто использовать вместо этого пользователя root, но это похоже на хакерское решение.

Главный вопрос:

  • Может ли пользователь узла открыть порт 80 и 443? Если да, то как?

Это также вызывает некоторые дополнительные вопросы:

  • Было бы лучше вместо этого использовать пользователя root?
  • Является ли хорошей идеей выставлять порты 80 и 443 в образе Docker?

Как бы то ни было, это мой Dockerfile:

FROM node:10-alpine
ENV NODE_ENV production
WORKDIR /app
COPY api api
COPY packages/utils packages/utils
COPY package.json package.json
COPY yarn.lock yarn.lock
RUN npm uninstall --global npm \
 && apk add build-base python2 --no-cache \
 && yarn --frozen-lockfile --production \
 && rm -r /opt/yarn* yarn.lock
USER node
ENTRYPOINT ["node", "-r", "esm", "api/server.js"]
EXPOSE 9999

Вы не можете запустить приложение узла на порту ниже 1024 без прав суперпользователя. Также запуск узла как root - плохая идея. Вам следует использовать обратный прокси, например nginx.

Molda 12.10.2018 16:14

... но когда вы запускаете образ, вы можете выбрать для использования произвольный порт на хосте; например, docker run -p 80:9999 опубликует порт на обычном HTTP-порту 80 на хосте.

David Maze 12.10.2018 16:42

Я знаю, что могу сопоставить открытый порт с любым произвольным портом на хосте или с помощью nginx. Я просто подумал, что имеет смысл выставить HTTP-сервер на порт по умолчанию в контейнере. Судя по комментариям, я ошибался.

Remco Haszing 13.10.2018 12:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
962
0

Другие вопросы по теме