【发布时间】:2018-08-25 13:48:22
【问题描述】:
我正在使用 Docker on Rails 项目。我发现只有一种方法可以在彼此之间可靠地链接服务,即。 e.在docker-compose.yml 中指定容器名称:
version: '3'
services:
db:
container_name: sociaball_db
...
web:
container_name: sociaball_web
...
sphinx:
container_name: sociaball_sphinx
...
所以现在我可以在database.yml 中编写类似的内容,并且不用担心数据库容器会随机将其名称从db 更改为db_1:
common: &common
...
host: sociaball_db
但是,我只能同时运行三个容器。每当我尝试运行 docker-container up 时,如果某些容器没有关闭,它会引发错误。
ERROR: for sociaball_db Cannot create container for service db: Conflict. The container name "/sociaball_db" is already in use by container "ee787c06db7b2a0205e3c1e552b6a5496545a78fe12d942fb792b27f3c38769c". You have to remove (or rename) that container to be able to reuse that name.
非常不方便。它通常会强制明确删除所有容器,以确保它们没有机会破坏。有办法解决吗?
【问题讨论】:
-
您不需要手动指定
container_name:;使用docker-compose.yml文件中的服务标签作为主机名(例如、host: db),容器应该可以相互访问。
标签: ruby-on-rails docker docker-compose