我不熟悉Docker或devop,但是我有以下文件:
.env。生产
DO_NOT_SEND_EMAILS=false
docker-compose.ci.yml
services:
my-app:
environment:
- DO_NOT_SEND_EMAILS=true
最佳答案
如果在环境by design中定义变量,dotenv似乎不会覆盖变量:
因此,答案可能取决于您使用dotenv-Dotenv.load
或Dotenv.overload
的方式。
这是一个最小测试:.env
SOMEVAR=from .env file
ANOTHERVAR=also from .env file
docker-compose.yml
version: '3'
services:
test:
build: .
command: ruby test.rb
volumes:
- .:/app
environment:
SOMEVAR: from docker compose
Dockerfile
FROM dannyben/alpine-ruby
WORKDIR /app
RUN gem install dotenv
COPY . .
test.rb
require 'dotenv'
# values in .env will override
# Dotenv.overload
# values in .env will be used only if not already set in the environment
Dotenv.load
p ENV['SOMEVAR']
p ENV['ANOTHERVAR']
跑步:
$ docker-compose build
$ docker-compose run test
关于ruby-on-rails - dotenv是否会覆盖docker设置的envvars组成?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57361417/