首页 > 解决方案 > 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

标签: dockerdockerfile

解决方案


推荐阅读