質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

解決済

Dockerコンテナ間通信 Dockerコンテナから別のコンテナのmysqlデータベースに接続したい

Kchan_01
Kchan_01

総合スコア109

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

2回答

0評価

0クリップ

660閲覧

投稿2022/03/21 12:50

編集2022/03/22 17:26

docker-composeを使ってコンテナオーケストレーションを学んでいます。

以下のフォルダ構成で、appコンテナから、dbコンテナのmariadbにアクセスしたいのですが、エラーが出てうまくいきません。

ディレクトリ構成

. ├── app │ └── Dockerfile ├── db │ └── Dockerfile └── docker-compose.yml

コード

app/Dockerfile

FROM debian:buster RUN set -x \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ mariadb-client \ vim CMD [ "tail", "-f" ]

db/Dockerfile

FROM debian:buster RUN set -x \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ mariadb-server \ mariadb-client \ vim CMD service mysql start \ && tail -f /dev/null

docker

version: "3.9" services: app: build: ./app networks: - frontend db: build: ./db expose: - 3306 networks: - frontend networks: frontend: driver: bridge volumes: db_data: {}

実行コマンド

appコンテナに入って、以下のコマンドを実行しましたが、エラーが出ます。

sh

root@0e0ad0889639:/# mysql -h db -uroot ERROR 2002 (HY000): Can't connect to MySQL server on 'db' (115) ## 接続は出来ているようです。 root@0e0ad0889639:/# ping db PING db (192.168.128.3) 56(84) bytes of data. 64 bytes from test_db_1.test_frontend (192.168.128.3): icmp_seq=1 ttl=64 time=0.104 ms 64 bytes from test_db_1.test_frontend (192.168.128.3): icmp_seq=2 ttl=64 time=0.142 ms

コンテナが接続できない理由を教えて頂きたいです。よろしくお願いします。

試したこと

dbコンテナ側

dbコンテナは初期設定等は行っていないです。
dbのコンテナでmariadbを立ち上げる事はできます。

root@9d3b519e464f:/# service --status-all [ ? ] hwclock.sh [ + ] mysql [ - ] rsync
MariaDB [mysql]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.001 sec) MariaDB [mysql]> SELECT User,Host FROM mysql.user; +------+-----------+ | User | Host | +------+-----------+ | root | localhost | +------+-----------+

appのコンテナ側

コンテナ名を返るとエラーが変わるので、通信自体は出来ていそうです。

root@69ccb34f8a30:/# mariadb -u root -h db ERROR 2002 (HY000): Can't connect to MySQL server on 'db' (115) root@69ccb34f8a30:/# mariadb -u root -h aa ERROR 2005 (HY000): Unknown MySQL server host 'aa' (-2)

環境

sh

❯ docker -v Docker version 20.10.12, build e91ed57 ❯ sw_vers ProductName: macOS ProductVersion: 12.3 BuildVersion: 21E230

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです