mysql - Docker Passenger Dashboard 显示 MySQL 无法连接到套接字

标签 mysql ruby-on-rails nginx docker passenger

我正在尝试在 phusion/passenger-ruby21 容器和单独的 mysql:5.5.46 容器上部署 Ruby on Rails 应用程序。两者都是在没有 docker compose 的情况下链接的。

我运行 Passenger-ruby 容器: sudo docker run -it -p 80:80 --link mysql55:mysql -e .env --name ror1 rubyonrails-phusionimg2 /bin/bash mysql 容器具有: sudo docker run --detach --name mysql55 --env MYSQL_ROOT_PASSWORD=**** --env MYSQL_USER=**** --env MYSQL_PASSWORD=**** --env MYSQL_DATABASE=**** mysql:5.5.46

这是我的database.yml在 Rails 应用程序中。

staging:
  adapter: mysql2
  database: "<%= ENV["DATABASE_NAME"] %>"
  host: "<%= ENV["MYSQL_PORT_3306_TCP_ADDR"] %>"
  port: "<%= ENV["MYSQL_PORT_3306_TCP_PORT"] %>"
  username: "<%= ENV["DATABASE_USERNAME"] %>"
  password: "<%= ENV["DATABASE_STAGING_PASSWORD"] %>"

这是 webapp.conf:

# /etc/nginx/sites-enabled/webapp.conf:
 server {
    listen       80;
    server_name  *****.com;
    root /home/app/webapp/public;
    passenger_enabled on;
    rails_env staging;
    index index.html index.htm;
    # auth_basic "Restricted";
    # auth_basic_user_file /etc/nginx/htpasswd;
}

rake db:create db:migrate运行成功,这意味着具有临时环境的rake程序能够到达mysql数据库容器。但从乘客仪表板我仍然得到Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock (2)

我错过了什么吗?所有环境似乎都已加载且正确。

最佳答案

您没有在应用程序中指定连接 mysql 的主机。

如果您不指定主机,mysql 将尝试连接您主机上的服务器,而不是容器中的服务器。

关于mysql - Docker Passenger Dashboard 显示 MySQL 无法连接到套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36596643/

相关文章:

MySQL 查询 WHERE 长度大于 1

用于个性化用户访问每个站点的 MySQL 结构?

php - 帮助PHP和MYSQL选择功能

ruby-on-rails - Mongoid 批量更新/Upsert 替代方案?

ruby-on-rails - 如何在rails 3中生成excel报告并将其发送到电子邮件

php - 保存具有不可空关系的模型

ruby-on-rails - 从国家/地区到语言的语言环境回退,无需单独定义每个语言

linux - nginx安装出现问题,不知道如何解决

json - nginx + PostgreSQL : return JSON object

php - 如何根据在 Google 上搜索的字词为自定义网址编制索引