lanlin / notes

个人笔记
https://github.com/lanlin/notes/issues
30 stars 0 forks source link

docker镜像构建时出现 FrontEnd DockerFIle.v0 类型错误的处理 #111

Open lanlin opened 2 years ago

lanlin commented 2 years ago

类型 1:文件名大小写引起

DockerFile - error
dockerFile - error
Dockerfile - work!
lanlin commented 2 years ago

类型 2:操作已被忽略的文件引起

COPY ./wp-content/ ./var/www/html/wp-content/

其中 wp-content/ 文件夹已在 .dockerignore 中被标记忽略。 这时,只需要从 .dockerignore 删除掉 wp-content/ 就可以

lanlin commented 2 years ago

类型 3:构建命令末尾的 . 被遗忘

# 注意最后有一个点(.),而且必须被空格隔开
docker build -t myapp .
lanlin commented 2 years ago

类型 4:语法错误

WORDPRESS_HTTPS_PORT="8443" \
WORDPRESS_HTTP_PORT="8080" \         <-- 此处的 \ 不能被省略
WORDPRESS_SKIP_INSTALL="yes" \       <-- 命令最后的 \ 需要被移除掉

EXPOSE 8080 8443
USER 0

如上所示,对于某些长指令采用折行编写的,需要在行尾加上 \\ 来标记命令并没有结束。 但是往往写着写着就写掉了,或者最后已经结束了还多加一个上去。

MAINTAINER MyApp
FROM centos:latest
...

如上所示,将 MAINTAINER 或者其他某些关键词写到了 FROM 前面。

# 名词拼写错误系列
FROM apline:3.7 
FROM alpine:3.7
...

还有太多的语法错误类型,没法一一列举。

lanlin commented 2 years ago

类型 5:终极解决方案

最好的办法就是把详细构建过程打印出来,这样出现错误的时候就能准确定位。

DOCKER_BUILDKIT=0  docker build -t myapp .

当然 DOCKER_BUILDKIT=0 会关闭 BuildKit 的使用,从而导致构建效率降低,回到老版本的经典构建模式。 此时的构建信息显示会很详细,有利于准确定位错误问题。

lanlin commented 2 years ago

类型 6:今天你和docker只能活一个!

image

如果类型 5 都不管用,请依次尝试下列步骤

  1. 重启 restart
  2. 清除数据 clean / purge data
  3. 恢复出厂设置 reset to factory defaults
  4. 重装 uninstall & install again
lanlin commented 2 years ago

类型 7:阿祖,收手吧!外面全是警察!

  1. 把 Dockfile 拷贝到其他电脑进行尝试
  2. 请其他大神帮忙解决问题
  3. 大神也不管用,请开始你推卸责任的表演...
  4. 责任推卸不掉,气死偶了,把电脑砸了!
  5. 已经没有退路了,赶紧收拾东西,准备跑路...