【问题标题】:Docker, set to env var file contentDocker,设置为 env var 文件内容
【发布时间】:2021-04-11 18:01:06
【问题描述】:

如何从文件中设置ENV 内容?像这样的:

COPY file_with_content.txt ./
ENV MODEL=file_with_content.txt

【问题讨论】:

    标签: docker


    【解决方案1】:

    您不能直接使用 Dockerfile ENV 将变量设置为文件的内容。

    如果您直接使用docker build 命令,则可以将文件内容作为构建时参数传递:

    ARG MODEL
    ENV MODEL=$MODEL # if needed at run time
    
    docker build --build-arg MODEL=$(cat file-with-content.txt) .
    

    更高级别的工具可能支持也可能不支持。例如,没有办法在docker-compose.yml 中轻松指定它。

    否则,Docker 对此没有内置支持,您可以使用Dockerfile - set ENV to result of command 中的一种技术将环境变量设置为文件内容。例如,使用入口点包装器:

    #!/bin/sh
    export MODEL=$(cat file-with-content.txt)
    exec "$@"
    
    ENTRYPOINT ["/entrypoint.sh"] # the script above, MUST be JSON-array syntax
    CMD the main command as you had it before
    

    【讨论】:

      【解决方案2】:

      只需在 docker compose yaml 文件中添加任何服务,例如 -

      services:
      
        application:
          image: application
          command: /start.sh
          env_file:
            - .env
          ports:
          - 8000:8000
          build:
            context: ./
            dockerfile: compose/local/application/Dockerfile
      

      更多信息可以参考这里https://docs.docker.com/compose/environment-variables/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-24
        • 1970-01-01
        • 1970-01-01
        • 2015-07-07
        • 1970-01-01
        • 1970-01-01
        • 2013-09-19
        • 2021-09-27
        相关资源
        最近更新 更多