Docker映像:测试
以下是Dockerfile中的默认值:
ENV users=2
ENV rampup=10
ENV duration=120
ENV environment=DEV
以下是入口点
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh:
bash ./bin/jmeter.sh -n -t -Jenvironment=${environment} -Jusers=${users} -Jrampup=${rampup} -Jduration=${duration} -j ${workspace}report.log
现在,我想通过替换环境变量在本地运行它:
docker run test -e environment=STG -e users=20 -e rampup=10 -e duration=120
但是,这些值不会以某种方式被替换。我做错了什么,有人可以帮忙吗?
答案 0 :(得分:1)
Dockerfile和Docker运行命令似乎很好,我很确定问题不在Docker中,这是您能做的最简单的示例。
FROM alpine
ENV users=2
ENV rampup=10
ENV duration=120
ENV environment=DEV
#COPY entrypoint.sh /entrypoint.sh
RUN echo $'#!/bin/ash \n\
echo \"env is Jenvironment=${environment} -Jusers=${users} -Jrampup=${rampup} -Jduration=${duration} -j ${workspace}report.log"' > /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
构建
Docker build -t testenv .
运行
docker run -e rampup=10 -e users=test -t alpintenv ash
因此您可以尝试将entrypoint.sh
更改为
#!/bin/bash
./bin/jmeter.sh -n -t -Jenvironment=${environment} -Jusers=${users} -Jrampup=${rampup} -Jduration=${duration} -j ${workspace}report.log
答案 1 :(得分:1)
任何docker run
选项(例如-e
来设置环境变量)都需要在docker run
命令中的图像名称之前 。映像名称之后的任何内容都将解释为您要运行的容器的命令,并且当您还有入口点时,会将其作为参数传递给入口点。 (如果您编辑脚本以包括行echo "$@"
,则会看到这些-e
选项。)
docker run \
-e environment=STG -e users=20 -e rampup=10 -e duration=120 \
test