docker コンテナがリモートの mysql DB に接続する
概要
Dockerコンテナ内にRubyスクリプトがあります。通常、このスクリプト(コンテナなし)はリモートのオンラインmysql DBに接続されていますが、Docker化するとこのDBとの接続が機能しません。 このデータベースの設定を変更しようとしましたが、ポートを 127.0.0.1 から 0.0.0.0 に変更しましたが、何も起こりませんでした。
これは私のdockerfileです:
FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y build-essential
WORKDIR home/docker
ADD Gemfile home/docker/Gemfile
ADD Gemfile.lock home/docker/Gemfile.lock
COPY Gemfile /home/dir_project/Gemfile
COPY Gemfile.lock /home/dir_project/Gemfile.lock
ADD . /home/docker
RUN bundle install
これは mysqld.cnf から取得した実際の構成です。
bind-address = 172.17.0.1 (this is a docker Host IP)
mysqlx-bind-address = 172.17.0.1
これは my_project フォルダーから取得した、database.yml です。
development:
adapter: mysql12
username:....
password:....
host:172.17.0.1
database: my_db
port: 3307
しかし、コンテナを実行しようとすると、mysqlとの接続がなく、コード0で終了します。
データベースへのアクセスに使用する SSH トンネルも変更しようとします。この Docker ホスト IP を文字列内に挿入します。
ssh -L 3307:172.17.0.1:3306 ... (and link to db)
しかし何もない。
解決策
RUN apt-get update -qq && apt-get install -y build-essential この行を修正してください