有rails应用程序,它使用mongodb和postgresql数据库。当我在本地运行时,一切都正常,但是当我试图在远程容器中打开时,它会抛出错误消息。
2021-03-14T20:22:27.985+0000 Failed: error connecting to db server: no reachable servers
docker-compose.yml文件定义了以下服务:
redis mongodb db rails
我使用以下命令启动远程容器:
docker-compose build -成功构建
docker-compose up -d -容器已经启动并运行
当我连接到rails容器并尝试执行
bundle exec rake aws:restore_db
引发上述错误。我不知道这是怎么回事。mongodb容器已经启动并正在运行。
下面介绍了docker-compose.yml:
version: '3.4'
services:
redis:
image: redis:5.0.5
mongodb:
image: mongo:3.6.13
volumes:
- mongo-data:/data/db
db:
image: postgres:11.3
volumes:
- db-data:/var/lib/postgresql/data
rails:
build: .
image: proj:latest
depends_on:
- db
- mongodb
- redis
volumes:
- .:/proj
ports:
- "3000:3000"
tty: true
stdin_open: true
env_file:
- .env/development.env
volumes:
db-data:
mongo-data:这是我如何启动所有四个远程容器:
$ docker-compose up -d
Starting proj_db_1 ... done
Starting proj_redis_1 ... done
Starting proj_mongodb_1 ... done
Starting proj_rails_1 ... done请帮助我理解远程容器应该如何相互交互。
发布于 2021-03-15 09:00:30
您的配置应该按名称指向服务,而不是指向本地主机上的端口。例如,如果您使用localhost:6380或127.0.0.1:6380连接到127.0.0.1:6380,那么现在需要使用redis:6380
如果这仍然没有帮助,您可以尝试添加容器之间的链接,以便将它们的名称作为服务解析。所以这个文件看起来是这样的:
version: '3.4'
services:
redis:
image: redis:5.0.5
networks:
- front-end
links:
- "mongodb:mongodb"
- "db:db"
- "rails:rails"
mongodb:
image: mongo:3.6.13
volumes:
- mongo-data:/data/db
networks:
- front-end
links:
- "redis:redis"
- "db:db"
- "rails:rails"
db:
image: postgres:11.3
volumes:
- db-data:/var/lib/postgresql/data
networks:
- front-end
links:
- "redis:redis"
- "mongodb:mongodb"
- "rails:rails"
rails:
build: .
image: proj:latest
depends_on:
- db
- mongodb
- redis
volumes:
- .:/proj
ports:
- "3000:3000"
tty: true
stdin_open: true
env_file:
- .env/development.env
networks:
- front-end
links:
- "redis:redis"
- "mongodb:mongodb"
- "db:db"
volumes:
db-data:
mongo-data:
networks:
front-end:链接将允许在容器中定义主机名。
link标志是遗留的,在新版本的停靠引擎中,用户定义的网络不需要link标志。此外,在码头群部署的情况下,这些链接将被忽略。但是,由于存在码头和码头组合的老安装,所以在故障排除中这是一件值得尝试的事情。
。
https://stackoverflow.com/questions/66629293
复制相似问题