无法将环境变量传递给 docker

Posted

技术标签:

【中文标题】无法将环境变量传递给 docker【英文标题】:Cannot pass env variables to docker 【发布时间】:2019-06-02 07:29:15 【问题描述】:

我正在尝试使用环境变量运行 docker 映像。

但无论是使用 env.list 文件还是通过命令行,它都不适用于我。

docker run -p 49160:8080 -d appname -e FOO='foo'

来自守护程序的错误响应:OCI 运行时创建失败: container_linux.go:348:启动容器进程导致“exec: \"-e\": 在 $PATH" 中找不到可执行文件": 未知。

run -p 49160:8080 -d appname --env-file ./env.list

来自守护程序的错误响应:OCI 运行时创建失败: container_linux.go:348:启动容器进程导致“exec: \"--env-file\": $PATH 中找不到可执行文件": 未知。

如果我去,它确实会运行:

docker run -p 49160:8080 -d appname

Dockerfile:

FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app
EXPOSE 8080
CMD [ "npm", "start" ]

【问题讨论】:

【参考方案1】:

您需要将环境变量放在图片名称之前。试试这个:

docker run -e FOO='foo' -p 49160:8080 -d appname

【讨论】:

那是一些糟糕的 arg 解析:( 与 --env-file 在图像名称之前相同【参考方案2】:

根据文档...link

要为单个命令设置值,请使用 RUN key=value 命令。

【讨论】:

【参考方案3】:

试试下面..例如:

docker run --env LOG_DIR_PATH='/code/$LOG_DIR_PATH'

【讨论】:

以上是关于无法将环境变量传递给 docker的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Github Secret 作为环境变量传递给 Docker?

将所有主机环境变量传递给 docker 容器的最简单方法

将环境变量传递给 Docker 时,Flyway 迁移失败

使用 Docker 将环境变量传递给 Spring Boot 应用程序不起作用

如何将环境变量从 docker-compose 传递给项目?

将环境变量中的 Django SECRET_KEY 传递给 Dockerized gunicorn