【问题标题】:How to pass through environment variables in docker run through an env file?如何通过 env 文件在 docker run 中传递环境变量?
【发布时间】:2018-02-22 15:20:44
【问题描述】:

鉴于此 Dockerfile:

FROM alpine:3.7
ENV LAST_UPDATED=2018-02-22
ARG XDG_CACHE_HOME=/tmp/cache/
RUN apk update && \
    apk add libxslt && \
    apk add sed && \
    apk add py-pip && \
    apk add mariadb-client && \
    apk add bash bash-doc bash-completion && \
    pip install httpie && \
    rm -rf /var/cache/apk/*
WORKDIR /usr/deleter/
COPY delete.sh ./
ENTRYPOINT ["/usr/deleter/delete.sh"]

我希望能够通过.env 文件以key=value 格式传递多个变量。

$ cat stage.env 
MYSQL_DATABASE=database
MYSQL_HOST=127.0.0.1:3306
MYSQL_PASSWORD=password
MYSQL_PORT=3306
MYSQL_USER=a_user

我的delete.sh 只是这样:

#!/bin/bash
set -e
set -o pipefail
echo "hello world"
echo ${MYSQL_DATABASE} ${MYSQL_HOST} ${MYSQL_PASSWORD} ${MYSQL_PORT} ${MYSQL_USER}
echo "ALL VARIABLES"
env

我希望看到环境变量,但它们都是空的。 --env-file 选项似乎不起作用。脚本的输出是:

hello world

ALL VARIABLES
HOSTNAME=f52c5c2aa22b
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/usr/deleter
LAST_UPDATED=2018-02-22
SHLVL=1
HOME=/root
_=/usr/bin/env

我通过以下方式创建并运行 docker 容器:

docker build -t deleter:local
docker run deleter:local --env-file stage.env

我尝试了--env-file stage.env--env-file=stage.env--env-file ./stage.env,但我没有看到包含任何内容,也没有看到任何抛出的错误。我也用绝对路径试了一下。

stage.env 与我的 Dockerfile 处于同一级别。

env 文件是有效的,我可以在本地机器上获取它并访问那里的变量。

我的错误在哪里?

【问题讨论】:

    标签: docker environment-variables alpine


    【解决方案1】:

    请记住,docker run 参数顺序是强制性的:

    $ docker help run 
    Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    

    环境设置属于选项:

     -e, --env list                       Set environment variables
         --env-file list                  Read in a file of environment 
    

    因此:

    docker run --env-file stage.env deleter:local
    

    将按预期导入环境变量。

    【讨论】:

    • 双字run有错吗?我会使用docker run --env-file stage.env deleter:local
    猜你喜欢
    • 2022-08-16
    • 2017-01-22
    • 2021-11-19
    • 2017-06-12
    • 2020-06-09
    • 1970-01-01
    • 2021-06-25
    • 2021-04-17
    • 1970-01-01
    相关资源
    最近更新 更多