Socket error from within Rails app in Docker container connecting to remote MySQL DB -
i have rails app (running in production mode) in docker container linked container running mysql server instance. app running under nginx/passenger "app" user. i've configured production database under rails follows:
production: adapter: mysql database: <%= env['mysql_production_database'] %> pool: 5 username: <%= env['mysql_user'] %> password: <%= env['mysql_pass'] %> host: <%= env['mysql_host'] %> port: <%= env['mysql_port'] %>
with the environment variables set when container ran. can execute database-related rake commands (migrate, reset, etc.) when attached container (running root). however, when try load app in browser following error:
can't connect local mysql server through socket '/var/run/mysqld/mysqld.sock' (2) activerecord (4.2.0) lib/active_record/connection_adapters/mysql_adapter.rb:456:in `real_connect' activerecord (4.2.0) lib/active_record/connection_adapters/mysql_adapter.rb:456:in `connect' activerecord (4.2.0) lib/active_record/connection_adapters/mysql_adapter.rb:108:in `initialize' activerecord (4.2.0) lib/active_record/connection_adapters/mysql_adapter.rb:36:in `new' activerecord (4.2.0) lib/active_record/connection_adapters/mysql_adapter.rb:36:in `mysql_connection'
does know cause mysql adapter incorrectly treat connection local in context, remote when running rake commands?
this caused environment variables set arguments @ run time not being set in rails process. web server (nginx) clears out environment variables before running, flushing ones set docker.
Comments
Post a Comment