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

Docker构建报错:无法计算缓存键,请求排查解决

Docker构建报错:文件找不到的解决方案

问题核心原因

  1. COPY指令路径错误:Docker构建时仅能访问构建上下文(执行docker build时指定的目录)内的文件,直接引用宿主机绝对路径会导致文件找不到,这是报错的直接原因。
  2. WORKDIR配置错误:容器内不存在宿主机的/Users/asklipios/Desktop/dockerable路径,应设置为Apache容器默认的网页目录。
  3. 命令拼写与配置错误:CMD里的httdp是拼写错误,且httpd镜像自带启动命令;ENV port = 5000格式错误,修改端口需调整Apache配置。
  4. 构建与运行命令混淆:docker run是运行容器的命令,构建镜像需用docker build。

修正步骤

1. 修正Dockerfile

将dock/Dockerfile内容替换为:

FROM httpd:2.4.57

# 设置容器内工作目录为Apache默认网页根目录
WORKDIR /usr/local/apache2/htdocs/

# 从构建上下文复制index.html到容器网页目录
COPY index.html .

# (可选)如需将Apache监听端口改为5000,取消下方注释
# RUN sed -i 's/Listen 80/Listen 5000/g' /usr/local/apache2/conf/httpd.conf

# 暴露端口(默认80,改端口后对应写5000)
EXPOSE 80

# 使用httpd镜像自带的前台启动命令
CMD ["httpd-foreground"]

2. 正确执行构建命令

在dockerable目录下执行(指定构建上下文为当前目录,Dockerfile路径为dock/Dockerfile):

docker build -t asklipios/example:1.0 -f dock/Dockerfile .

3. 正确运行容器

默认80端口映射宿主机5000端口:

docker run -d -p 5000:80 asklipios/example:1.0

若修改了容器内端口为5000,命令改为:

docker run -d -p 5000:5000 asklipios/example:1.0

关键说明

  • 构建上下文:docker build最后的.代表将当前目录作为构建上下文,此时Docker能访问dockerable下的所有文件(包括index.html)。
  • Apache默认配置:httpd镜像默认将网页放在/usr/local/apache2/htdocs/,监听80端口,无需额外配置即可运行静态页面。

内容的提问来源于stack exchange,提问作者Asklipios Dimoglou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:32:50