Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将rails应用程序中的mysql与docker连接?_Mysql_Ruby On Rails_Docker - Fatal编程技术网

如何将rails应用程序中的mysql与docker连接?

如何将rails应用程序中的mysql与docker连接?,mysql,ruby-on-rails,docker,Mysql,Ruby On Rails,Docker,我创建了一个rails应用程序:testapp 然后在下面添加了Dockerfile和docker compose.yml文件 Dockerfile FROM ruby:2.2.0 RUN apt-get update -qq && apt-get install -y build-essential mysql-client libmysqlclient-dev nodejs RUN mkdir /testapp WORKDIR /testapp ADD Gemfile /te

我创建了一个rails应用程序:testapp

然后在下面添加了
Dockerfile
docker compose.yml
文件

Dockerfile

FROM ruby:2.2.0
RUN apt-get update -qq && apt-get install -y build-essential mysql-client libmysqlclient-dev nodejs
RUN mkdir /testapp
WORKDIR /testapp
ADD Gemfile /testapp/Gemfile
ADD Gemfile.lock /testapp/Gemfile.lock
RUN bundle install
ADD . /testapp
docker-compose.yml

db:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: 1234
web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  volumes:
    - .:/testapp
  ports:
    - "3000:3000"
  links:
    - db
我的数据库设置文件:

config/database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 1234
  host: db
  port: 3306

development:
  <<: *default
  database: testapp_development

test:
  <<: *default
  database: testapp_test

production:
  <<: *default
  database: testapp_production
控制台中的错误:

web_1 | /usr/local/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
web_1 |   error_class: Mysql2::Error
web_1 |   environment_name: development
web_1 |   cgi_data: {"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"192.168.99.1", "REMOTE_HOST"=>"192.168.99.1", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://192.168.99.104:3000/", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"192.168.99.104", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/2.2.0/2014-12-25)", "HTTP_HOST"=>"192.168.99.104:3000", "HTTP_USER_AGENT"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:41.0) Gecko/20100101 Firefox/41.0", "HTTP_ACCEPT"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "HTTP_ACCEPT_LANGUAGE"=>"ja,en-US;q=0.7,en;q=0.3", "HTTP_ACCEPT_ENCODING"=>"gzip, deflate", "HTTP_CONNECTION"=>"keep-alive", "HTTP_CACHE_CONTROL"=>"max-age=0", "rack.version"=>["1", "3"], "rack.multithread"=>"false", "rack.multiprocess"=>"false", "rack.run_once"=>"false", "rack.url_scheme"=>"http", "rack.hijack?"=>"true", "rack.hijack"=>"#<Proc:0x007fd6b4016c28@/usr/local/bundle/gems/rack-1.6.4/lib/rack/handler/webrick.rb:76 (lambda)>", "rack.hijack_io"=>nil, "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "ORIGINAL_FULLPATH"=>"/", "ORIGINAL_SCRIPT_NAME"=>"", "action_dispatch.parameter_filter"=>["password"], "action_dispatch.redirect_filter"=>[], "action_dispatch.show_exceptions"=>"true", "action_dispatch.show_detailed_exceptions"=>"true", "action_dispatch.cookies_serializer"=>"json", "action_dispatch.cookies_digest"=>nil, "ROUTES_47215567452160_SCRIPT_NAME"=>"", "action_dispatch.request_id"=>"4048a5f6-974e-484a-9c16-fc4e1ca1c1dc", "action_dispatch.remote_ip"=>"192.168.99.1", "rack.request.query_string"=>"", "rack.request.query_hash"=>{}}
web_1 |   error_message: Mysql2::Error: Access denied for user 'root'@'172.17.0.7' (using password: YES)
web_1|/usr/local/lib/ruby/2.2.0/webrick/server.rb:294:in'block in start_thread'
web_1|错误_类:Mysql2::错误
网络1 |环境|名称:开发
web|1 cgi|U数据:{“网关|U接口”=>“cgi/1.1”、“路径|U信息”=>“/”、“查询字符串”=>、“远程|U地址”=>“192.168.99.1”、“远程|U主机”=>“192.168.99.1”、“请求|U方法”=>“获取”、“请求|URI”=>”http://192.168.99.104:3000/“,“脚本\u名称”=>”,“服务器\u名称”=>“192.168.99.104”,“服务器\u端口”=>“3000”,“服务器\u协议”=>“HTTP/1.1”,“服务器\u软件”=>“WEBrick/1.3.1(Ruby/2.2.0/2014-12-25)”、“HTTP_主机”=>“192.168.99.104:3000”、“HTTP_用户_代理”=>“Mozilla/5.0(Macintosh;英特尔Mac OS X 10.11;rv:41.0)Gecko/20100101 Firefox/41.0”、“HTTP_接受”=>“文本/html、应用程序/xhtml+xml、应用程序/xml;q=0.9、*/*;q=0.8”、“HTTP_接受_语言”=>“ja、en-US、q=en-US、q=0、q=0、q=0、q=0、q=0、q=0、q=0、q=0.0、q=0、q=0、q=0、q=0、q=0、q=0gzip,deflate,“HTTP\U连接”=>“保持活动状态”,“HTTP\U缓存控制”=>“最大年龄=0”,“rack.version”=>[“1”,“3”],“rack.multithread”=>“false”,“rack.multiprocess”=>“false”,“rack.run\u once”=>“HTTP”,“rack.url\u方案”=>“HTTP”,“rack.hijack?”=>“true”,“rack.hijack”=>“,“rack.hijack”=>”,“rack.io”=>无”,“HTTP\U版本”=>“HTTP/1.1”,“请求路径”/“原始完整路径“=>”/“,“原始脚本名称”=>”,“操作调度.参数筛选器”=>[“密码”],“操作调度.重定向调度筛选器”=>[],“操作调度.显示异常”=>“真”,“操作调度.显示详细异常”=>“真”,“操作调度.cookies序列化程序”=>“json”,“操作调度.cookies摘要”=>零,”路由"47215567452160"脚本"名称","动作"调度.请求"id","4048a5f6-974e-484a-9c16-fc4e1ca1c1dc","动作"调度.远程"ip","192.168.99.1","机架.请求.查询"字符串","机架
web_1|错误消息:Mysql2::错误:用户“root@'172.17.0.7”的访问被拒绝(使用密码:是)

如何设置
config/database.yml
文件?还有什么问题吗?例如,mysql图像。

您确定密码正确吗?您是否尝试直接指定主机?如果您在web容器中执行
docker exec bash
操作,然后:1.ping db-很可能会解析并ping db容器2.
mysql-u root-p-h db
使用1234密码从它连接,并查看那里的错误
web_1 | /usr/local/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
web_1 |   error_class: Mysql2::Error
web_1 |   environment_name: development
web_1 |   cgi_data: {"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"192.168.99.1", "REMOTE_HOST"=>"192.168.99.1", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://192.168.99.104:3000/", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"192.168.99.104", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/2.2.0/2014-12-25)", "HTTP_HOST"=>"192.168.99.104:3000", "HTTP_USER_AGENT"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:41.0) Gecko/20100101 Firefox/41.0", "HTTP_ACCEPT"=>"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "HTTP_ACCEPT_LANGUAGE"=>"ja,en-US;q=0.7,en;q=0.3", "HTTP_ACCEPT_ENCODING"=>"gzip, deflate", "HTTP_CONNECTION"=>"keep-alive", "HTTP_CACHE_CONTROL"=>"max-age=0", "rack.version"=>["1", "3"], "rack.multithread"=>"false", "rack.multiprocess"=>"false", "rack.run_once"=>"false", "rack.url_scheme"=>"http", "rack.hijack?"=>"true", "rack.hijack"=>"#<Proc:0x007fd6b4016c28@/usr/local/bundle/gems/rack-1.6.4/lib/rack/handler/webrick.rb:76 (lambda)>", "rack.hijack_io"=>nil, "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "ORIGINAL_FULLPATH"=>"/", "ORIGINAL_SCRIPT_NAME"=>"", "action_dispatch.parameter_filter"=>["password"], "action_dispatch.redirect_filter"=>[], "action_dispatch.show_exceptions"=>"true", "action_dispatch.show_detailed_exceptions"=>"true", "action_dispatch.cookies_serializer"=>"json", "action_dispatch.cookies_digest"=>nil, "ROUTES_47215567452160_SCRIPT_NAME"=>"", "action_dispatch.request_id"=>"4048a5f6-974e-484a-9c16-fc4e1ca1c1dc", "action_dispatch.remote_ip"=>"192.168.99.1", "rack.request.query_string"=>"", "rack.request.query_hash"=>{}}
web_1 |   error_message: Mysql2::Error: Access denied for user 'root'@'172.17.0.7' (using password: YES)