docker --build-arg 参数使用时报错"invalid reference format"的解决方法
参考编译脚本: https://github.com/skiy/docker-caddy-php/blob/main/check_build.sh#L52
docker build --build-arg PHP_VERSION="${full_ver}" -t ${prefix}caddy-php:${full_ver} . || show_errmsg "docker build failed"
Step 3/18 : FROM php:${PHP_VERSION}-fpm-alpine
invalid reference format
docker build failed
按理说,编译脚本是没有错误的。多方查找资料对比,均没有得到答案。
最后发现问题出现在 Dockerfile 文件。
Dockerfile
FROM caddy:alpine AS caddy-deps
ARG PHP_IMAGE_VER="8.0.14-fpm-alpine"
FROM php:$PHP_IMAGE_VER
LABEL maintainer="Jetsung Chan <skiy@jetsung.com>"
COPY --from=caddy-deps /usr/bin/caddy /usr/bin/caddy
当只有一个 image 的时候,是可以使用 "FROM php:${PHP_VERSION}-fpm-alpine" 这种形式的,问题就出在使用了多个 image,导致出现了这种问题。解决方法只需要将该内容修改为以下内容即可。
ARG PHP_IMAGE_VER="8.0.14-fpm-alpine"
FROM caddy:alpine AS caddy-deps
FROM php:$PHP_IMAGE_VER
LABEL maintainer="Jetsung Chan <skiy@jetsung.com>"
COPY --from=caddy-deps /usr/bin/caddy /usr/bin/caddy
在将要使用的 ARG 参数的放在 FROM 的范围内,若是多个基础镜像都需要使用这个参数,则每个镜像的 FROM 下均需要再配置一次 ARG 参数。