Docker构建postgres服务报错failed to parse stage name "postgres:"如何解决
问题根因
报错信息中提示的failed to parse stage name "postgres:": invalid reference format,本质是Dockerfile中FROM指令使用的${POSTGRES_VERSION}变量未被正确赋值,拼接后的镜像标签仅为postgres:,不符合Docker镜像引用的格式规范,因此构建失败。
解决方案
你可以根据自己的使用场景选择以下任意一种方案修复:
- 构建时手动传入版本参数
执行docker build命令时通过--build-arg传入POSTGRES_VERSION的有效值,示例命令如下,可自行替换需要的postgres版本号:docker build --build-arg POSTGRES_VERSION=15-alpine -t custom-postgres . - 在Dockerfile中配置默认版本
在FROM指令前新增ARG定义并设置默认值,后续构建时如果没有传参就会自动使用默认版本,修改后的Dockerfile开头如下:ARG POSTGRES_VERSION=15-alpine FROM postgres:${POSTGRES_VERSION} # 原有后续内容保持不变 - docker-compose构建场景配置
如果使用docker-compose管理服务,在postgres服务的build配置块中增加args参数即可:services: postgres: build: context: ./ args: POSTGRES_VERSION: 15-alpine # 其余服务配置保持不变
验证方式
构建完成后执行以下命令,可确认镜像的postgres版本是否符合预期:
docker run --rm custom-postgres postgres --version
内容的提问来源于stack exchange,提问作者Marko Vasic
相关产品推荐
相关产品推荐

