由于使用了多个微服务,每个微服务都有自己的数据库依赖性(有些重叠)。我有一个自定义的bash文件,该文件允许开发人员选择他们要在本地运行的微服务(用于测试),它实际上是建立一个命令:
编辑:感谢回答指出,在每个撰写-f
文件之前,您确实需要.yml
,我确实使用了此文件,但我最初并没有在这里输入。
docker-compose -f \
-f <docker-compose.ms1.yml> -f <docker-compose.ms2.yml> \
-f <docker-compose.dba> -f <docker-compose.dbb> \
up ms1-container ms2-container \
dba-container dbb container
现在这可以正常工作,但是按照传统(使用单个.yml
文件并仅运行docker-compose up
),如果我想查看输出日志,可以执行docker-compose logs -f
,或者要重新启动撰写文件中的特定服务,我将:
docker-compose stop <service_name>
docker-compose rm <service_name>
docker-compose create <service_name>
docker-compose start <service_name>
但是现在所有这些都是动态启动的,如何重新启动特定的docker-compose服务,以及如何使用logs -f
进入日志?
答案 0 :(得分:1)
首先,我认为您的docker-compose
命令无效,应该是:
docker-compose -f docker-compose_1.yaml -f docker-compose_2.yaml up -d
然后,一切与您只使用一个docker-compose.yaml
的情况相同:
例如
docker-compose_1.yaml:
version: '3'
services:
frontend:
image: alpine
command: "tail -f /dev/null"
docker-compose_2.yaml:
version: '3'
services:
backend:
image: alpine
command: "tail -f /dev/null"
您仍然可以使用docker-compose -f docker-compose_1.yaml -f docker-compose_2.yaml stop frontend
停止一项服务:
shubuntu1@shubuntu1:~/77$ docker-compose -f docker-compose_1.yaml -f docker-compose_2.yaml ps
Name Command State Ports
----------------------------------------------------
77_backend_1 tail -f /dev/null Up
77_frontend_1 tail -f /dev/null Exit 137
对于日志,docker-compose -f docker-compose_1.yaml -f docker-compose_2.yaml logs
代表所有服务,而docker-compose -f docker-compose_1.yaml -f docker-compose_2.yaml logs backend
代表一项服务。
您可以提供多个-f配置文件。提供多个文件时,Compose会将它们组合为一个配置。 Compose按照您提供文件的顺序构建配置。后续文件将覆盖并添加到其前身。