gpt4 book ai didi

docker - 多个特定于目标的变量值

转载 作者:行者123 更新时间:2023-12-02 10:00:05 27 4
gpt4 key购买 nike

跟随文档到manage Target-specific Variable Values

prog : CFLAGS = -g
prog : prog.o foo.o bar.o

我可以设置特定于目标的变量。

现在我的问题是,如何设置多个特定于目标的变量。需要一一设置吗?

dev_deploy: env = dev
dev_deploy: image = abc
dev_deploy: tag = 1.0.4-dev
dev_deploy:
docker run -t --rm -e env=$(env) \
$(image):$(tag) \
sh -c "test.sh"


prod_deploy: env = prod
prod_deploy: image = abc
prod_deploy: tag = 1.0.3-prod
prod_deploy:
docker run -t --rm -e env=$(env) \
$(image):$(tag) \
sh -c "test.sh"

有什么方法可以通过简单的方式设置本地环境(特定于目标的变量)?

最佳答案

第一个问题的直接答案是肯定的,您必须为每个特定于目标的变量使用单独的目标行并逐一设置它们。

你的第二个问题的答案是肯定的:乌兹 Solr 特描述了一个。这也是我推荐的方法。 uzsolt 的解决方案与特定于目标的变量解决方案之间的一个区别是特定于目标的变量是 inherited by prerequisites 。您似乎不需要这里的行为,但如果您这样做,那么这个解决方案将不适合您。

如果您需要特定于目标的变量,或者每个变量分配一行仍然太痛苦(例如,您有大量这些变量,并且您确实希望每组一行),则可能有更多选项理解起来很复杂,但以后使用起来会更简单。

例如,如果您知道所有变量值都不包含空格,那么您可以创建一个用户定义的宏,使用 eval 设置特定于目标的变量,如下所示:

assign-vars = $(foreach A,$2,$(eval $1: $A))

$(call assign-vars, dev_deploy, env=devenv image=abc tag=1.0.4-dev)
$(call assign-vars, prod_deploy, env=prod image=abc tag=1.0.3-prod)

注意:第一个参数是目标,每个赋值必须是单个“单词”(无嵌入空格),并且赋值之间没有逗号。

关于docker - 多个特定于目标的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com