首页 > 解决方案 > Docker,设置为 env var 文件内容

问题描述

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

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

标签: docker

解决方案


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

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

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

这可能会或可能不会被更高级别的工具支持。例如,没有一种方法可以轻松地在 a 中指定它docker-compose.yml

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

#!/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

推荐阅读