docker - Docker撰写ARGS不适用于环境

标签 docker docker-compose dockerfile

我试图了解 docker-compose.yml 文件中args:的用法,以便可以在构建运行时设置环境变量。我了解,如果我有一个 .env 文件,那么它会自动进行设置,并且能够像我这样在 Dockerfile 内部进行访问,

FROM node:alpine
ARG NODE_ENV
ENV NODE_ENV=${NODE_ENV} // --> This works fine if .env file is present

但是,如果我想通过environment:(在 docker-compose.yml 且没有 .env 文件中)加载这些值,
version: '3.3'
services:
  web:
    image: web
    environment:
      - NODE_ENV=dev
    build:
      context: .
      args:
        - NODE_ENV
    ports:
      - 8100

然后它在 Dockerfile 内部返回一个空白/空值。

我发现环境变量不能在Dockerfile内部(或在构建过程中)直接访问,但是当对环境变量进行硬编码时env_file的工作方式是不可以的。

预先感谢您的帮助。

最佳答案

检查您的Docker版本-在较旧的Docker 版本中,Dockerfile ENV命令使用空格而不是'='

FROM node:alpine
ARG NODE_ENV
ENV NODE_ENV ${NODE_ENV} 

关于docker - Docker撰写ARGS不适用于环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51050485/

相关文章:

docker - 挂载的Docker卷损坏文件

docker - 如何为两个在彼此之间转发和请求的容器创建docker-compose?

mysql - 构建 docker 镜像时初始化数据库脚本的最佳方法

docker - 有没有办法将Docker ONBUILD指令延迟到将来的子镜像?

bash - Docker 构建无法从 Dockerfile 中使用的 bash 脚本中的 archive.ubuntu.com 获取包

linux - Docker 在 docker 主机内部监听 RabbitMQ 而不是从外部监听,为什么?

docker - Docker安装配置容器创建错误

php - Docker:如何在多个容器/服务之间共享相同的应用程序代码(例如PHP-FPM和NGINX)

docker - 构建镜像时,Docker for Windows退出,代码为127

linux - 无法运行docker