使用 docker-compose 站起来选择服务

ran*_*fde 4 deployment software-distribution docker microservices devops

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

谢谢!

acr*_*ran 11

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

services:
  app:
    # ...

  database:
    # ...

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

  database-init:
    profiles: ["init"]
    # ...
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)


ldg*_*ldg 7

你的意思是:

docker-compose up SERVICE ?

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

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

根据您的需要,这可能对您更好,但与up执行方式有所不同。请参阅:https : //docs.docker.com/compose/reference/run/


joh*_*s85 0

compose 中没有现成的东西可以帮助您解决此问题。如果您确实想走这条路,您可能正在考虑在此之上编写一个薄层/cli 脚本。