【问题标题】:How do I have start different services based on RAILS environment in docker-compose如何在 docker-compose 中基于 RAILS 环境启动不同的服务
【发布时间】:2020-06-01 03:19:04
【问题描述】:
I would like to start service-A, service-B, service-C if RAILS_ENV is development
I would like to start service-A, service-B, service-D if RAILS_ENV is staging
I would like to start service-A, service-B, service-E if RAILS_ENV is production

我应该如何在 docker-compose.yaml 文件中智能覆盖。

service-C, service-D, service-E are not variants of the same service, but could be completely different containers as well

【问题讨论】:

  • service-Cservice-Dservice-E 是同一服务的不同配置,还是完全不同的配置?请提供更多上下文以避免 X-Y 问题
  • service-C、service-D、service-E 不是同一个服务的变体,但也可以是完全不同的容器

标签: ruby-on-rails docker-compose


【解决方案1】:

我的建议是从脚本中调用 docker-compose。

如果你的 docker-compose.yaml 看起来像这样:

service-A:
    # Your service definition

service-B:
    # Your service definition
    depends_on:
        - service-A

service-C:
    # Your service definition
    depends_on:
        - service-B

service-D:
    # Your service definition
    depends_on:
        - service-B

service-E:
    # Your service definition
    depends_on:
        - service-B

然后,不是调用docker-compose up,而是调用一个通过检查环境变量RAILS_ENV来执行条件逻辑的脚本,如下所示:

./start-services.sh

脚本定义如下所示:

#!/bin/bash
if [ $RAILS_ENV== "development" ]
  then
  docker-compose up service-C
elif [ $TESTVAR == "staging" ]
  then
  docker-compose up service-D
elif [ $TESTVAR == "production" ]
  then
  docker-compose up service-E
else
  exit 1
fi

当然,这个实现是依赖于unix的,但我认为它可以推广到任何操作系统。

【讨论】:

    【解决方案2】:

    Docker-compose 有overrides,你可以有:

    • docker-compose.yml 与服务 A 和服务 B 共享基本配置
    • docker-compose.override.yml 中的 service-C 配置用于开发(docker compose 默认会选择这个)
    • docker-compose.production.yml 中的 service-E 配置,并运行如下
      docker-compose -f docker-compose.yml -f docker-compose.production.yml up -d
      
    • docker-compose.staging.yml 中的服务 E 类似

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2018-03-29
      • 2018-05-05
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      相关资源
      最近更新 更多