gpt4 book ai didi

ruby-on-rails - Docker,独立的多轨实例

转载 作者:行者123 更新时间:2023-12-04 07:38:50 24 4
gpt4 key购买 nike

我试图创建一个开发环境,其中包含多个微服务,就像在生产环境中一样运行。

我想用 Docker 运行两个 rails 应用程序,在它们之间进行调用。

我知道我可以使用 links,但是有了这个我总是必须运行其中之一作为主链接。这意味着,我只能调试这个,我想查看每个控制台的输出。也许我做错了什么,这就是我问的原因。

这是我的 docker-compose.yml 文件:

rails-app-A:
build: .
dockerfile: "DockerfileA"
environment:
RAILS_ENV: development
links:
- db
command: bundle exec rails server -p 3005 -b '0.0.0.0'
volumes:
- ".:/home/app"
volumes_from:
- bundle
expose:
- "3005"
ports:
- "3005:3005"

rails-app-B:
build: .
dockerfile: "DockerfileB"
environment:
RAILS_ENV: development
links:
- db
command: bundle exec rails server -p 3000 -b '0.0.0.0'
volumes:
- ".:/home/app"
volumes_from:
- bundle
expose:
- "3000"
ports:
- "3000:3000"

这就是我运行 Rails 应用程序的方式:

docker-compose run --service-ports rails-app-A
docker-compose run --service-ports rails-app-B

我总是遇到这样的错误:

Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 3000

Errno::ECONNREFUSED (Failed to open TCP connection to localhost:3000 (Connection refused - connect(2) for "localhost" port 3000))

问题是我可以使用浏览器访问所有这些内容。

对于使用 VirtualBox 的 OSX Docker 版本,这工作正常(只需调用 localhost:3000localhost:3005),但在 Ubuntu 或 Docker-beta 中,失败了。

编辑

我知道 rails-app-A 的“localhost”与 rails-app-B 中的“localhost”是不同的服务器,因为它们作为不同的机器运行。当我有 VirtualBox 时,我可以访问,因为我有 VirtualBox 实例的 IP (192.169.99.100)。

我现在正在使用 http://localtunnel.me/ 并且我可以访问其他服务。但是,无论如何,有更好的方法吗?

最佳答案

最后,我实现了使用external_link调用外部服务:

rails-app-A:
build: .
dockerfile: "DockerfileA"
environment:
RAILS_ENV: development
links:
- db
external_links:
- app_B

...ommited lines...

app_B 应该是一个正在运行的容器,之前是这样执行的:

docker-compose run --service-ports --name app_B rails-app-B

添加此 --name app_B 可以使用此名称访问它。

我仍然不明白的是如何在没有打开 rails-app-B 的情况下构建 rails-app-A。如果 rails-app-A 将 rails-app-B 作为外部链接,并且在另一个方向发生同样的情况,builds 将变得难以管理。

关于ruby-on-rails - Docker,独立的多轨实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com