我创建了以下 Makefile,如果我调用 docker-test,它将运行 docker,然后在本地调用 makefile build-test 目标。
当我手动运行 docker 并在 docker 中调用 makefile 时,它工作得很好,变量NETDIR
设置正确,但是当我从主机调用它时,使用make docker-test
docker 中的变量NETDIR
定义为/src
而不是/usr/app/networker/src
export NETDIR=$(PWD)/src
docker-%:
docker run --rm -v "$(PWD)":/usr/app/networker -w /usr/app/networker network make $(@:docker-%=build-%)
clean-%:
cd ./build && $(MAKE) $@
build-%:
cd ./build && $(MAKE) $@
您需要在 docker run 命令中指定环境变量。如
docker run --rm -v "$(PWD)":/usr/app/networker -e NETDIR -w /usr/app/networker network make $(@:docker-%=build-%)
(这将告诉容器从父环境继承NETDIR
,或者您可以选择设置一个值)