如何让Makefile自动调用适配版本的docker-compose或docker compose?
Makefile自动适配docker compose/docker-compose版本的调用方式
你写的这段判断逻辑没问题,它会自动检测系统里可用的docker compose命令形式:先尝试新版的docker compose,如果执行失败(说明是旧版环境),就 fallback 到docker-compose命令,最终把合适的命令存在DOCKER_COMPOSE变量里。
接下来只需要在Makefile的各个目标中,用$(DOCKER_COMPOSE)代替原来硬写的docker-compose或者docker compose即可。比如:
# 自动检测并设置docker compose命令 ifneq ($(shell docker compose version 2>/dev/null),) DOCKER_COMPOSE=docker compose else DOCKER_COMPOSE=docker-compose endif # 启动服务 up: $(DOCKER_COMPOSE) up -d # 停止并清理服务 down: $(DOCKER_COMPOSE) down -v # 重新构建并启动 restart: $(DOCKER_COMPOSE) down -v $(DOCKER_COMPOSE) build $(DOCKER_COMPOSE) up -d # 查看容器日志 logs: $(DOCKER_COMPOSE) logs -f
这样不管是你的新版环境,还是队友的旧版环境,运行make up、make down这些命令时,都会自动调用对应的docker compose命令,不用手动修改Makefile适配不同环境。
内容的提问来源于stack exchange,提问作者Zlatko
相关产品推荐
相关产品推荐

