【发布时间】:2019-09-18 21:46:30
【问题描述】:
我正在为我的组织构建一些基础 Docker 映像,供应用程序团队在 OpenShift 中部署应用程序时使用。我必须制作的图像之一是 NodeJS 图像(我们希望我们的图像是内部的,而不是来自 DockerHub)。我正在 RedHat 的 RHEL7 Universal Base Image (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 中不起作用,因为它创建了一个对访问容器的用户不可用的子 shell。
我尝试从源代码安装,但我遇到了需要升级 gcc/g++ 版本的不同问题,尽管它们在我的组织的配置存储库中不可用。我还认为,如果我可以从包管理器中让 NodeJS 工作,它将有助于获取安全补丁,并且应该更新包。
我的问题是,创建可用于构建在 NodeJS 上运行的应用程序的图像的推荐步骤是什么?
【问题讨论】: