我正在尝试创建一个 Makefile 目标,它首先检查我的 Docker 容器是否存在。如果它存在,那么我想发出 Docker Container Restart 命令,否则我想发出 Docker Run 命令来创建和启动容器。
我已对以下内容进行编码,但出现如下所示的错误。结果 = 1 是正确的,因为我确实有一个容器正在运行。我已经移除了容器并测试结果变为 0,这也是正确的。问题似乎是当我尝试在ifeq
语句中使用结果时。有人可以告诉我我做错了什么吗?(我在调试时暂时注释掉了 docker 命令并用 echo true / false 替换了它们)。
start_docker_myapp:
result = $(shell (docker ps -a | grep myapp ) | wc -l )
ifeq (${result}, 1)
@echo 'true'
# docker restart ${IMAGE}
else
@echo 'false'
# docker run -v ${DIR}/var/log/docker:/var/log/myapp -p 1812:1812/udp -p 1813:1813/udp --detach --name ${IMAGE} $(REGISTRY)/$(IMAGE):$(TAG)
endif
Run Code Online (Sandbox Code Playgroud)
终端输出
Run Code Online (Sandbox Code Playgroud)$ make start_docker_myapp result = 1 make: result: No such file or directory make: *** [start_docker_myapp] Error 1 $
您的 Makefile 存在许多问题(除了 Makefile 是否是适当的解决方案的问题之外):
\n\ndocker ps -a
返回所有已知容器的信息,包括非运行容器;以下作品:
\n\nresult = $(shell docker ps -f name=myapp -q | wc -l)\nstart_docker_myapp:\nifeq ($(strip $(result)),1)\n @echo true\nelse\n @echo false\nendif\n\n.PHONY: start_docker_myapp\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
9947 次 |
最近记录: |