我正在尝试在Makefile食谱中执行以下操作。使用python脚本获取服务器容器ip。构建在docker容器中运行的命令。在docker容器中运行该命令。
test:
SIP=$(shell python ./scripts/script.py get-server-ip)
CMD="iperf3 -c ${SIP} -p 33445"
docker exec server ${CMD}我明白了
$ make test
SIP=172.17.0.6
CMD="iperf3 -c -p 33445"
docker exec server
"docker exec" requires at least 2 arguments.
See 'docker exec --help'.用法: docker exec选项CONTAINER命令ARG...
在运行中的容器中运行命令make:* test Error 1
发布于 2019-12-27 12:03:05
我最终得到了类似这样的东西。
SERVER_IP=$(shell python ./scripts/script.py get-server-ip); \
SERVER_CMD="iperf3 -s -p ${PORT} -4 --logfile s.out"; \
CLIENT_CMD="iperf3 -c $${SERVER_IP} -p ${PORT} -t 1000 -4 --logfile c.out"; \
echo "Server Command: " $${SERVER_CMD}; \
echo "Client Command: " $${CLIENT_CMD}; \
docker exec -d server $${SERVER_CMD}; \
docker exec -d client $${CLIENT_CMD};这似乎工作得很好。我很想听听有没有其他的方法。
发布于 2019-12-29 19:15:09
你可以写成这样的代码。在这里,我使用了一个target-specific variable,假设IP地址只在此规则中是必需的。除了由call function注入的IP地址之外,iperf_command被定义为一个变量,因为它的格式看起来相当固定。
此外,由于规则似乎不应该将目标生成为文件,因此我也将.PHONY target放入其中。
iperf_command = iperf3 -c $1 -p 33445
.PHONY: test
test: iperf_server_ip = $(shell python ./scripts/script.py get-server-ip)
test:
docker exec server $(call iperf_command,$(iperf_server_ip))https://stackoverflow.com/questions/59495056
复制相似问题