docker - dockerfile 中的参数化问题
问题描述
我正在寻找参数化这样的东西API${version}Name.jmx
。
因此,该版本将根据我在图像运行时传递的值进行更改。
因此,如果我在运行时通过“5”,它应该替换为“API5Name.jmx”,但现在它被替换为“APIName.jmx”。
我试过了${}
,$
但值没有被替换。
有没有办法做到这一点?
请指导我。
下面是我运行 docker 的 sh 文件:
environmentName=$1
threadUser=$2
rampUpPeriod=$3
loopCount=$4
version=$5
docker build --no-cache=true -t jmeterimage -f Dockerfile.txt .
docker run -d --name jmimages -e "ENVIRONMENTNAME=${environmentName}" -e "THREADUSERS=${threadUser}" -e "RAMPUPPERIOD=${rampUpPeriod}" -e "LOOPCOUNT=${loopCount}" -e "VERSION=${version}" -t jmeterimage
下面是dockerfile:
FROM alpine:3.12
ARG environmentName
ARG threadUsers
ARG rampUpPeriod
ARG loopCount
ARG version
ARG JMETER_VERSION="5.4.1"
ENV JMETER_HOME /opt/apache-jmeter-${JMETER_VERSION}
ENV JMETER_BIN ${JMETER_HOME}/bin
ENV JMETER_DOWNLOAD_URL https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-${JMETER_VERSION}.tgz
# ENV ENVIRONMENTNAME=${environmentName}
# ENV THREADUSERS=${threadUsers}
# ENV RAMPUPPERIOD=${rampUpPeriod}
# ENV LOOPCOUNT=${loopCount}
# Install extra packages
# Set TimeZone, See: https://github.com/gliderlabs/docker-alpine/issues/136#issuecomment-612751142
ARG TZ="Asia/Kolkata"
ENV TZ ${TZ}
RUN apk update \
&& apk upgrade \
&& apk add ca-certificates \
&& update-ca-certificates \
&& apk add --update openjdk8-jre tzdata curl unzip bash \
&& apk add --no-cache nss \
&& rm -rf /var/cache/apk/* \
&& mkdir -p /tmp/dependencies \
&& curl -L --silent ${JMETER_DOWNLOAD_URL} > /tmp/dependencies/apache-jmeter-${JMETER_VERSION}.tgz \
&& mkdir -p /opt \
&& tar -xzf /tmp/dependencies/apache-jmeter-${JMETER_VERSION}.tgz -C /opt \
&& rm -rf /tmp/dependencies
# TODO: plugins (later)
# && unzip -oq "/tmp/dependencies/JMeterPlugins-*.zip" -d $JMETER_HOME
# Set global PATH such that "jmeter" command is found
ENV PATH $PATH:$JMETER_BIN
# Entrypoint has same signature as "jmeter" command
# RUN echo ${ENVIRONMENTNAME}
# RUN echo ${THREADUSERS}
# RUN echo ${THREADUSERS}
# RUN echo ${LOOPCOUNT}
WORKDIR ${JMETER_HOME}
CMD sh /opt/apache-jmeter-5.4.1/bin/entrypoint.sh && jmeter -JCookieManager.save.cookies=true -JEnvName=${ENVIRONMENTNAME} -JthreadUsers=${THREADUSERS} -JrampUpPeriod=${RAMPUPPERIOD} -JloopCount=${LOOPCOUNT} -n -t /opt/apache-jmeter-5.4.1/bin/API${VERSION}Name.jmx -l /opt/apache-jmeter-5.4.1/bin/demoresults.jtl -e -o /opt/apache-jmeter-5.4.1/bin/demoresults -f
解决方案
推荐阅读
- reactjs - ReactJS:如何正确处理从 food2fork API 获取的数据?
- javascript - 仅当从 Http 服务获取数据时如何显示微调器?
- angular - 离子构建 android 与谷歌服务失败
- javascript - Babel 不会转译子文件夹
- html - 调整大小时如何让我的网站正确缩放?
- java - Amazon Ec2 实例的响应时间很慢
- java - 它不会给我代码错误,MySQLSyntaxErrorException
- visual-studio-code - VSCode Minimap 不工作,是我的机器太旧了吗?
- python - 如何将html标签添加到字符串,避免嵌套标签
- python - 为什么数据框的内容会影响设置?