我在docker build期间遇到了env文件。
我正在尝试为我的ruby项目构建docker镜像,该项目使用环境变量有很多原因。
其中一个原因是检查数据库是否可用(使用ActiveRecord::Base.connection
),并基于使用某些主数据创建/更新数据库。
我可以通过docker run --env-file='.env'
命令在docker运行期间使用env文件。
但是我想在我的docker build中使用那些ENV变量。
任何人都可以帮助我解决这种情况吗?
答案 0 :(得分:1)
您还可以使用--build-arg
设置构建环境变量。 documentation
正如您所看到的,它等同于docker run --env
,而--env-file
没有一个
答案 1 :(得分:1)
我遇到过在 sed 命令中需要一个变量的情况。我使用了以下内容:
RUN source config.env; sed -i -r "s/^url=.*/url=${MONGODB_SERVER}/" /app/module/module.ini
变量可用性仅限于该特定命令,但这对我来说已经足够了。
答案 2 :(得分:1)
默认情况下,.env 文件包含可用于容器的变量,而不是容器的构建过程。同样,--env-file 参数设置一个文件来读取容器可用的变量,而不是构建过程。
在撰写本文时,似乎没有使用命令行参数为构建设置环境变量的本机方法,但有一种解决方法。您可以使用以下命令从命令行为 docker-compose (build) 设置不同的 .env 文件名/路径:
env $(cat /path/to/custom.file.env) docker-compose up
如果您(也)需要为容器设置一组不同的环境变量,请在您的 docker-compose.yml 中使用该文件的名称设置 env_file:
行。
答案 3 :(得分:0)
您可以在Dockerfile中添加true
。
查看docker文档。