在使用docker
的过程中,发现还是有挺多坑需要踩的。我们在使用docker-compose
的时候,有不少辅助选项可以帮助到我们。
例如在docker-compose up
的时候,如果未加任何选项,那么默认docker
将会读取的是当前文件夹下的docker-compose.yml
文件。如果我们需要读取不同配置,实际上不需要每一次都修改docker-compose.yml
文件,如果我们要进行实验性地操作,可以新建一个.yml
配置文件,例如docker-compose-dev.yml
,在下次docker-compose up
的时候,我们可以加上-f
选项:
$ docker-compose -f docker-compose-dev.yml up
这样一来,docker
就会读取我们指定的配置文件进行docker-compose up
了。
另外,docker-compose up
命令并不是后台运行的,也就是说,我们可以实时看到containers
的信息输出,这在本地开发的时候,实际上是比较方便的。经常性地,我们会看到docker-compose up -d
这个命令,其中-d
选项就是detach
的意思,即我们运行完docker-compose up
后,containers
都是以后台进程方式运行的,也就是说,我们不能看到即时的信息输出。如果需要在这种情况下查看containers
的输出,我们可以使用docker logs [service-name]
,例如我们在docker-compose-dev.yml
中配置了一个名为eagle
的service
,那么我们就可以使用
$ docker logs eagle
来查看日志输出。
在以上两种up
方式中,若要重启某个service
,我们不需要ctrl + c
来结束全部service
,而只需要使用restart
命令。还是举刚才的例子,假设我们的service
名为eagle
,那么我们可以使用
$ docker-compose -f docker-compose-dev.yml restart -t 1 eagle
这个命令来单独重启eagle
服务。注意到restart
中-t 1
的意思是1
秒后重启,因为默认restart
会在10
秒后才重启,所以我们通常都会加上-t 1
这个参数。
还有值得注意的是,如果遇到了奇怪的问题,可以试试docker-compose down
然后docker-compose up --force-recreate
。
--force-recreate
官方说明如下:
Recreate containers even if their configuration and image haven't changed.
所以如果在networks
出现奇怪的问题,或者rds
突然不能访问了,试试看这个命令,或许有奇效。