我有一个docker-compose设置,用于启动Rails Web应用程序和PostgreSQL DB容器。
这两个服务都已启动,但是我需要在Web应用程序容器(服务=“web”)中运行db:seed和db:migrate。
我尝试这样做:
docker-compose exec web rails db:seed
但这告诉我:
ERROR: No container found for web_1
当我尝试使用docker时:
docker exec <container-id> rails db:seed
Docker确实尝试在容器中执行命令,但是显然失败了,因为Docker不了解PostgreSQL容器并且无法连接到该容器来执行种子命令。
这似乎只是Docker for Mac中的一个问题。在Ubuntu中一切正常。
我正在使用docker-compose 1.8.0和docker 1.12.1版本。
最佳答案
好,找到答案了。不知道这是否特定于Mac的Docker,但在Ubuntu中我没有这个问题。
我有2个终端在运行。首先,我跑了
docker-compose up
提供我的服务。
在第二个中,我运行了:
docker-compose exec web rails db:seed
在我的Web容器中执行rails命令。
问题出在这里:在第二个终端中,您必须与docker-compose.yml文件位于同一目录中。您不能只在任何地方运行docker-compose命令。
当我在第二个终端中更改为正确的目录时,exec命令运行正常。
关于macos - docker-compose在Docker for Mac中找不到服务或容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39832480/