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

创建Nexus仓库Windows容器启动时报找不到指定文件错误如何解决

错误原因分析

  • 路径配置无效:RUN cd "c:\\nexus\\nexus-3.36.0-01\\bin" 指令不会生效。Docker 中每一条 RUN 指令都在独立的子进程中执行,执行完成后子进程退出,工作目录不会被继承到后续指令中,CMD 执行时的工作目录依然是之前设置的 c:/nexus,系统在当前路径下找不到 nexus.exe 就会抛出找不到文件的错误。
  • 缺少运行依赖:Nexus 3 运行依赖 Java 8/11 运行环境,你使用的 Windows Nano Server 基础镜像默认没有预装 JRE,即使路径配置正确也会缺少运行依赖无法启动。
  • 启动参数缺失:默认直接执行 nexus.exe 会让程序后台运行,容器检测不到前台进程会直接退出,且没有指定绝对路径也会提升找不到文件的概率。

解决方案

修改后的 Dockerfile 参考如下:

FROM mcr.microsoft.com/windows/nanoserver:1909
# 预装OpenJDK11运行环境,也可以自行拷贝本地JRE到镜像内配置环境变量
RUN curl -L -o openjdk11.zip https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9/OpenJDK11U-jre_x64_windows_hotspot_11.0.11_9.zip && \
    tar -xf openjdk11.zip && \
    move jdk-11.0.11+9-jre c:\jre && \
    setx PATH "%PATH%;c:\jre\bin" && \
    del openjdk11.zip

WORKDIR c:/nexus
RUN mkdir "sonatype-work"
RUN mkdir "nexus-3.36.0-01"
COPY nexus-3.36.0-01 "nexus-3.36.0-01"
COPY sonatype-work "sonatype-work"

# 用WORKDIR全局切换工作目录到nexus二进制文件所在路径
WORKDIR c:/nexus/nexus-3.36.0-01/bin
EXPOSE 8081
# 加/run参数让nexus前台运行,避免容器直接退出
CMD ["nexus.exe", "/run"]

你也可以先通过交互模式启动容器验证配置是否正常:
执行 docker run -it --rm myself/nexus cmd 进入容器后,分别运行 where nexus.exe 和 java -version 确认路径和Java环境配置正常后,再用后台模式启动容器即可。

内容的提问来源于stack exchange,提问作者debasree sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:07