我不熟悉Docker或devop,但是我有以下文件:

.env。生产

DO_NOT_SEND_EMAILS=false

docker-compose.ci.yml
services:
  my-app:
    environment:
      - DO_NOT_SEND_EMAILS=true
  • 这两个文件都包含更多内容,但这是相关的行。
  • 最后将envvar设置为什么?
  • 最佳答案

    如果在环境by design中定义变量,dotenv似乎不会覆盖变量:



    因此,答案可能取决于您使用dotenv-Dotenv.loadDotenv.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/

    10-12 21:07