Rails から MySQL Docker コンテナへの接続
概要
以下に docker-compose とデータベースの構成ファイルを提供しました。 Rails アプリをコンテナ化された mysql インスタンスに接続しようとしています。
# docker-compose.yml
version: '3'
services:
db:
image: mysql:latest
container_name: appname-mysql
environment:
MYSQL_ROOT_PASSWORD: approot
MYSQL_DATABASE: appdb
MYSQL_USER: app_user
MYSQL_PASSWORD: app!
ports:
- "3309:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
# database.yml
development:
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: 127.0.0.1 # i have tried 'db' and 'appname-mysql'
username: root
password: papercliproot
host: 127.0.0.1 に設定すると、「ActiveRecord::DatabaseConnectionError: ユーザー名/パスワード、ユーザー名:paperclip_user を使用してデータベースに接続する際に問題が発生しました」というエラーが表示されます。 (ActiveRecord::DatabaseConnectionError)
何か助けはありますか?
ホストを127.0.0.1に設定し、docker-compose.ymlファイルで定義されたコンテナ名dbを使用してみました。コンテナ自体の名前である appname-mysql も試してみました。
解決策
この問題は、database.yml ファイルに port オプションを追加することで解決されました。
development:
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: 127.0.0.1
username: paperclip_user
password: paperclip!
database: paperclipdb
port: 3309