You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于RedHat UBI镜像构建Nginx镜像时路径错误求助

解决UBI镜像运行Nginx提示"executable file not found in $PATH"的问题

问题根源

RedHat的ubi8/ubi-init是一个仅包含初始化系统的基础镜像,默认并没有预装Nginx。你直接在Dockerfile里执行nginx命令,容器里根本找不到这个可执行文件,所以才会抛出exec: "nginx": executable file not found in $PATH的错误。

修复方案

你需要在Dockerfile中添加安装Nginx的步骤,同时根据你的需求调整端口配置。以下是修改后的完整Dockerfile:

FROM registry.access.redhat.com/ubi8/ubi-init
USER root

# 安装Nginx并清理安装缓存以减小镜像体积
RUN dnf install -y nginx && \
    dnf clean all && \
    rm -rf /var/cache/dnf

# 复制你的静态文件到Nginx默认的网页根目录
COPY api-gatway /usr/share/nginx/html

# 可选:修改Nginx配置,让它监听8080端口(匹配你EXPOSE的端口)
RUN sed -i 's/listen       80;/listen       8080;/g' /etc/nginx/nginx.conf

EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]

关键细节说明

  • 安装Nginx:使用dnf install -y nginx完成安装,UBI镜像默认配置了官方软件源,无需额外配置。后续的dnf clean all和删除缓存目录是为了避免安装残留文件增大镜像体积。
  • 端口调整:Nginx默认监听80端口,你的Dockerfile里EXPOSE 8080,所以要么通过sed命令修改Nginx配置文件把监听端口改成8080,要么把EXPOSE改成80,同时调整运行命令的端口映射(比如docker run -p 8080:80 ...)。
  • 运行验证:修改完成后,重新构建镜像并运行:
    docker build -t test .
    docker run --name testinxcg -d -p 8080:8080 test
    
    这样容器就能正常启动Nginx服务了。

内容的提问来源于stack exchange,提问作者M B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:37:54