Я создаю несколько базовых образов Docker для своей организации, которые будут использоваться командами приложений при развертывании своих приложений в OpenShift. Один из образов, которые мне нужно сделать, — это образ NodeJS (мы хотим, чтобы наши образы были внутренними, а не получены из DockerHub). Я использую универсальный базовый образ RedHat RHEL7 (ubi). Однако у меня возникли проблемы с настройкой NodeJS для работы в контейнере. Вот мой Dockerfile:
FROM myimage_rhel7_base:1.0
USER root
RUN INSTALL_PKGS="rh-nodejs10 rh-nodejs10-npm rh-nodejs10-nodejs-nodemon nss_wrapper" && \
yum install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
rpm -V $INSTALL_PKGS && \
yum clean all
USER myuser
Однако, когда я запускаю образ, нет доступных команд node
или npm
, если я не запускаю scl enable rh-nodejs10 bash
. Это не работает в Dockerfile, так как создает подоболочку, которую не может использовать пользователь, обращающийся к контейнеру.
Я попытался установить из исходного кода, но столкнулся с другой проблемой, связанной с необходимостью обновления версий gcc/g++, несмотря на то, что они недоступны в моих настроенных репозиториях из моей организации. Я также полагаю, что если я смогу заставить NodeJS работать из менеджера пакетов, это поможет получить исправления безопасности и такие, если пакет будет обновлен.
Мой вопрос: каковы рекомендуемые шаги для создания образа, который можно использовать для создания приложений, работающих на NodeJS?