【问题标题】:How to evaluate environment variable in Dockerfile?如何评估 Dockerfile 中的环境变量?
【发布时间】:2020-07-12 01:24:48
【问题描述】:

我想使用存储在 Dockerfile 中的 .env 文件中的本地环境变量的值,就像使用 docker-compose 一样。我的脚本是这样的。

#!/bin/bash
source $(pwd)/.env

echo "Building new training container image..."
docker build \
        -t "rasa_training_img" \
        --build-arg RASA_VERSION \
        ./rasa-training

echo "Build finished. Running container..."
docker run \
        -v $(pwd)/rasa-server:/app \
        --name "rasa_training_cont" \
        rasa_training_img

Dockerfile看起来像这样:

# FROM rasa/rasa:1.9.4-spacy-de
FROM rasa/rasa:$RASA_VERSION-spacy-de

COPY ./utils /training-utils

# install necessary python packages
USER root
RUN pip install -r training-utils/requirements.txt
USER 1001

# execute training steps script
ENTRYPOINT [ "/bin/bash" ]
CMD [ "training_steps.sh" ]

当我尝试像这样运行它时,它会产生以下输出:

Step 1/7 : FROM rasa/rasa:$RASA_VERSION-spacy-de
invalid reference format

还用花括号尝试过:

Step 1/7 : FROM rasa/rasa:${RASA_VERSION}-spacy-de
invalid reference format

有没有一种方法可以访问变量的值(就像使用 docker-compose 一样)? 我知道我基本上可以用 docker-compose 文件替换我的脚本,但我想避免这种情况。

【问题讨论】:

    标签: bash shell docker docker-compose environment-variables


    【解决方案1】:

    在发出docker build 命令时,环境变量可以作为构建参数传递。

    在您的 Dockerfile 中,在 FROM 行上方添加以下内容。

    ARG RASA_VERSION=${RASA_VERSION}
    # FROM rasa/rasa:1.9.4-spacy-de
    FROM rasa/rasa:${RASA_VERSION}-spacy-de
    COPY ./utils /training-utils
    
    # install necessary python packages
    USER root
    RUN pip install -r training-utils/requirements.txt
    USER 1001
    
    # execute training steps script
    ENTRYPOINT [ "/bin/bash" ]
    CMD [ "training_steps.sh" ]
    

    在你的 docker 命令中做

    docker build --build-arg RASA_VERSION=${RASA_VERSION} -t imagename:tag .
    

    【讨论】:

    • 谢谢,但似乎不起作用。已经在某个时候尝试过了,抱歉没有提到:Step 1/8 : ARG RASA_VERSION=${RASA_VERSION} Step 2/8 : FROM rasa/rasa:${RASA_VERSON}-spacy-de invalid reference format
    猜你喜欢
    • 2018-01-15
    • 2016-08-01
    • 2011-07-04
    • 2010-10-14
    • 2016-08-27
    • 2021-08-28
    • 2020-11-17
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多