docker在CMD中使用环境变量运行python脚本

she*_*nzy 3 python environment-variables python-2.7 docker dockerfile

我正在尝试运行一个简单的 Dockerfile,它运行 python 脚本并采用一些环境变量作为参数(使用 argparser):

FROM python:2.7
COPY . /app
WORKDIR /app
RUN pip install argparse
ENV POOL "pool_argument"
CMD ["python", "script.py", "--pool", "${POOL}"]
Run Code Online (Sandbox Code Playgroud)

和我的Python脚本script.py

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--pool', required=True)
known_args, unknown_args = parser.parse_known_args()
print("Args: {}".format(known_args))
Run Code Online (Sandbox Code Playgroud)

构建并运行后,我得到:

Args: Namespace(pool='${POOL}')
Run Code Online (Sandbox Code Playgroud)

我尝试了很多变体,但似乎都不起作用。

Sea*_*lay 7

您需要运行来sh -c评估环境变量:

CMD ["sh", "-c", "python script.py --pool ${POOL}"]
Run Code Online (Sandbox Code Playgroud)