多模块Gradle项目配置com.avast.gradle.docker-compose启动应用及排障
解决Docker Compose插件生成非法镜像标签的问题
问题分析
错误invalid tag "162ee0778db45c04b4ff6e6c2a46c5c8_functional-tests_-web": invalid reference format是因为com.avast.gradle.docker-compose插件自动生成的镜像标签违反了Docker镜像命名规范——旧版本插件处理带横杠的模块名时,容易生成包含_-这类非法字符组合的标签。
解决步骤
1. 自定义镜像标签,规避自动生成的非法格式
在functional-tests模块的build.gradle.kts中显式配置插件的镜像标签,替换自动生成的规则:
dockerCompose { build { images { // 替换为你docker-compose.yml中实际的服务名,自定义合法标签 "web" to "functional-tests-web:latest" } } }
2. 升级Docker Compose插件版本
你当前使用的0.16.12版本存在自动生成标签的bug,升级到最新稳定版可修复该问题:
plugins { // ... 保留其他插件 id("com.avast.gradle.docker-compose") version "0.17.5" }
3. 检查docker-compose.yml的build配置
确保build部分的context正确指向application模块,避免插件错误使用functional-tests模块路径生成标签:
services: web: build: context: ../application # 明确指向application模块根目录 dockerfile: Dockerfile
4. 清理旧镜像与缓存
执行以下命令清除残留的非法镜像和Gradle缓存,避免遗留问题:
docker rmi 162ee0778db45c04b4ff6e6c2a46c5c8_functional-tests_-web ./gradlew clean :functional-tests:composeDown --no-build-cache
内容的提问来源于stack exchange,提问作者Laodao
相关产品推荐
相关产品推荐

