Techioz Blog

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 この行を修正してください