Docker,拒绝所有其他正在运行的服务的连接
Posted
技术标签:
【中文标题】Docker,拒绝所有其他正在运行的服务的连接【英文标题】:Docker, connection refused for every other running services 【发布时间】:2016-10-07 15:11:18 【问题描述】:我本地安装的docker无法访问其他端口。
这是我的docker-compose.yml
文件:
db:
image: library/mysql:5.6
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
expose:
- "3306"
ports:
- "3306:3306"
mailcatcher:
image: yappabe/mailcatcher
ports:
- "1025:1025"
- "1080:1080"
rails-app:
build: .
dockerfile: "Dockerfile"
environment:
RAILS_ENV: development
links:
- mailcatcher
- db
command: bundle exec rails server -p 3005 -b '0.0.0.0'
volumes:
- ".:/home/app"
volumes_from:
- bundle
expose:
- "3005"
ports:
- "3005:3005"
这是mailcatcher config/environments/development.rb
的配置:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = address: "localhost", port: 1025
这就是我运行 rails 应用程序的方式:
docker-compose run --service-ports rails-app
这是我在运行docker ps
时看到的:
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1fa8ac2ad8fd pmt_rails-app "bundle exec rails se" 5 seconds ago Up 3 seconds 0.0.0.0:3005->3005/tcp pmt_rails-app_run_1
4f65bb2fc9ac yappabe/mailcatcher "/run.sh" About an hour ago Up About an hour 0.0.0.0:1025->1025/tcp, 0.0.0.0:1080->1080/tcp pmt_mailcatcher_1
cfb364ee569f library/mysql:5.6 "docker-entrypoint.sh" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp pmt_db_1
这是我在 rails 应用程序尝试发送电子邮件时得到的结果:
Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 1025
from /usr/local/lib/ruby/2.3.0/net/smtp.rb:542:in `initialize'
当我尝试连接在另一个端口上运行的另一个 rails server
时,我遇到了同样的错误。
我正在 Mac OSX 中使用 Docker-beta。
【问题讨论】:
【参考方案1】:localhost
在 docker 实例上将引用该实例公开的端口。如果您想从同一docker-compose.yml
文件中的另一个实例访问端口,请使用links,其形式为service-name:alias
。 (如果排除alias
,则与source-name
相同。)
所以在上面的示例中,mailcatcher config/environments/development.rb
的配置应该是:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = address: "mailcatcher", port: 1025
【讨论】:
你救了我的命! 很高兴我能帮上忙 :) 2 条生命,而且还在计数!以上是关于Docker,拒绝所有其他正在运行的服务的连接的主要内容,如果未能解决你的问题,请参考以下文章
来自其他容器的 Docker mongo 图像“连接被拒绝”