【发布时间】:2021-04-11 18:01:06
【问题描述】:
如何从文件中设置ENV 内容?像这样的:
COPY file_with_content.txt ./
ENV MODEL=file_with_content.txt
【问题讨论】:
标签: docker
如何从文件中设置ENV 内容?像这样的:
COPY file_with_content.txt ./
ENV MODEL=file_with_content.txt
【问题讨论】:
标签: docker
您不能直接使用 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
【讨论】:
只需在 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/
【讨论】: