【问题标题】:Stand up select services with docker-compose使用 docker-compose 支持选择服务
【发布时间】:2016-11-21 07:21:15
【问题描述】:

我想创建一个安装脚本,它可以根据用户输入支持某些服务。我正在使用 docker 来管理这些服务。使用 docker-compose 我可以定义多个服务,但默认情况下,docker-compose.yml 中定义的所有服务都启动。有什么解决方法吗?另外,这是一个糟糕的策略吗[但我所有的服务都使用 docker,所以还有其他方法吗]?

谢谢!

【问题讨论】:

  • 你能告诉我们更多关于你的用例的细节吗?

标签: deployment docker microservices devops software-distribution


【解决方案1】:

docker-compose 1.28.0 开始,新的service profiles 就是为此而生的!使用profiles,您可以将服务标记为仅在特定配置文件中启动:

services:
  app:
    # ...

  database:
    # ...

  app-init:
    profiles: ["init"]
    # ...

  database-init:
    profiles: ["init"]
    # ...
docker-compose up # start only your core services
docker-compose --profile init up # start app and init services
docker-compose run database-init # run init service interactively

【讨论】:

    【解决方案2】:

    你的意思是:

    docker-compose up SERVICE?

    这应该启动一个服务和任何链接的容器。 你也可以这样做:

    docker-compose run SERVICE [COMMAND] [ARGS...]

    根据您的需要,这可能对您更好,但在执行方式上与 up 有一些不同。见:https://docs.docker.com/compose/reference/run/

    【讨论】:

    • 听起来 OP 想要一些但不是全部(或一些用户定义的输入),无论哪种方式听起来都像是 compose 之外的一些编排。
    • 可能只是想确保他知道这些选项。使用run 的某些版本可能仍然可行,具体取决于用例和服务的复杂性。
    • upv 了解更多用例信息:D
    【解决方案3】:

    compose 中没有任何开箱即用的功能可以帮助您解决此问题。如果您确实想沿着这条路线走,您可能正在考虑在此之上编写一个薄层/cli 脚本。

    【讨论】:

      猜你喜欢
      • 2016-08-12
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 2020-07-03
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多