【问题标题】:Docker .env variables to scriptDocker .env 变量到脚本
【发布时间】:2019-10-20 18:00:19
【问题描述】:

我制作了一个.env 文件,其中包含一些变量:

WS_PORT=12345

现在docker-compose.yml的配置方式是:

  gateway:
    build:
      context: ./src/WebSocket
      dockerfile: Dockerfile
    image:sn-gateway
    container_name: sn-gateway
    ports:
      - "12345:12345"
    volumes:
      - vendor:/root/vendor
      - ./src/WebSocket:/root
    env_file:
      - ./src/WebSocket/config/.env

我遇到的问题是Dockerfile 运行了一个应该使用环境变量的脚本(运行docker-compose config 确实列出了它),但脚本中的变量是空的。

脚本:

#!/bin/sh

echo ------
echo $WS_PORT
echo ------

什么都没有。我做错了什么,可以这样做吗?我已经看到很多通过 shell 命令和类似命令转发ENV 的示例,但我不希望这样。我希望在运行 docker-compose up -d 时一切正常,而无需指定任何内容。

【问题讨论】:

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


    【解决方案1】:

    您可以在脚本中获取您的 env 文件

    #!/bin/sh    
    source ./src/WebSocket/config/.env
    
    
    echo ------
    echo $WS_PORT
    echo ------
    

    【讨论】:

    • 这确实有效,但我觉得这好像是一种黑客行为。我有多个.env 文件,我想将它们转发到一个容器……使用这种方法,我必须将它们转发两次。将来更改某些内容将再次需要在多个地方进行更改,我不认为这正是我想要的
    • 来自 docker doc: Docker Doc Note: If your service specifies a build option, variables defined in environment files are not automatically visible during the build. Use the args sub-option of build to define build-time environment variables. docker-compose build 目前不支持 env_file,你需要指定 ARG 或者你需要破解它
    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2023-04-03
    • 2021-12-13
    • 2022-01-17
    • 2016-07-24
    • 1970-01-01
    • 2021-08-27
    • 2018-09-21
    相关资源
    最近更新 更多