Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过环境文件传递docker中的环境变量?_Docker_Environment Variables_Alpine - Fatal编程技术网

如何通过环境文件传递docker中的环境变量?

如何通过环境文件传递docker中的环境变量?,docker,environment-variables,alpine,Docker,Environment Variables,Alpine,鉴于此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 &&

鉴于此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"]
我希望能够通过
key=value
格式的
.env
文件传递多个变量

$ 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变量,但它们都是空的。
--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 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 run deleter:local
将按预期导入环境变量