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

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

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

docker-compose

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

MySQL

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

MariaDB

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

Docker

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

Q&A

解決済

1回答

2615閲覧

docker-composeでアプリ-データベース間で通信ができない

yuuuuuuuuuuuuuu

総合スコア15

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

docker-compose

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

MySQL

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

MariaDB

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

Docker

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

0グッド

1クリップ

投稿2020/02/06 09:02

編集2020/02/07 01:52

皆様

いつもお世話になっています。

問題は表題の通りですが、行った操作を以下に記述します。

皆様のお知恵を貸していただければ幸いです。

実行環境

docker -v

  • Docker version 19.03.5, build 633a0ea

docker-compose -v

  • docker-compose version 1.25.4, build 8d51620a

OS

  • Centos8

実行の内容

docker-composeを用いてredmineをウェブサーバー上に公開したくbitnami-docker-redmineのレポジトリから"docker-compose.yml"をダウンロードしました。

https://github.com/bitnami/bitnami-docker-redmine

以下のコードで実行。

curl

1curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-redmine/master/docker-compose.yml > docker-compose.yml

ダウンロードしたファイルを確認して、問題ないことを認識しました。

version: '3' services: mariadb: image: 'bitnami/mariadb:10.3' environment: - ALLOW_EMPTY_PASSWORD=yes - MARIADB_USER=bn_redmine - MARIADB_DATABASE=bitnami_redmine volumes: - 'mariadb_data:/bitnami' redmine: image: 'bitnami/redmine:latest' environment: - REDMINE_DB_USERNAME=bn_redmine - REDMINE_DB_NAME=bitnami_redmine ports: - '80:3000' volumes: - 'redmine_data:/bitnami' depends_on: - mariadb volumes: mariadb_data: driver: local redmine_data: driver: local

確認後に以下のコマンドで、コンテナを立ち上げました。

docker-compose up -d

コンテナを立ち上げてしばらく待ち、以下のコマンドでログを確認しました。

docker-compose logs

確認したところ、"redmine"側でエラーが発生しており、
"Error executing 'postInstallation': Failed to connect to mariadb:3306 after 36 tries"
との記述がありました。(以下エラーログ)

mariadb_1 | mariadb 05:22:19.39 mariadb_1 | mariadb 05:22:19.40 Welcome to the Bitnami mariadb container mariadb_1 | mariadb 05:22:19.40 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-mariadb mariadb_1 | mariadb 05:22:19.40 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-mariadb/issues mariadb_1 | mariadb 05:22:19.40 Send us your feedback at containers@bitnami.com mariadb_1 | mariadb 05:22:19.40 mariadb_1 | mariadb 05:22:19.40 INFO ==> ** Starting MariaDB setup ** mariadb_1 | mariadb 05:22:19.44 INFO ==> Validating settings in MYSQL_*/MARIADB_* env vars mariadb_1 | mariadb 05:22:19.44 WARN ==> You set the environment variable ALLOW_EMPTY_PASSWORD=yes. For safety reasons, do not use this flag in a production environment. mariadb_1 | mariadb 05:22:19.48 INFO ==> Initializing mariadb database mariadb_1 | mariadb 05:22:19.51 INFO ==> Installing database redmine_1 | redmine_1 | Welcome to the Bitnami redmine container redmine_1 | Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-redmine redmine_1 | Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-redmine/issues redmine_1 | Send us your feedback at containers@bitnami.com redmine_1 | mariadb_1 | mariadb 05:22:23.05 INFO ==> Starting mariadb in background redmine_1 | nami INFO Initializing redmine redmine_1 | redmine INFO Configuring Redmine database... redmine_1 | mysql-c INFO Trying to connect to MySQL server mariadb_1 | mariadb 05:22:24.12 INFO ==> Configuring authentication mariadb_1 | mariadb 05:22:24.17 INFO ==> Running mysql_upgrade mariadb_1 | mariadb 05:22:24.35 INFO ==> Stopping mariadb mariadb_1 | mariadb 05:22:26.38 INFO ==> ** MariaDB setup finished! ** mariadb_1 | mariadb_1 | mariadb 05:22:26.42 INFO ==> ** Starting MariaDB ** mariadb_1 | 2020-02-06 5:22:26 0 [Note] /opt/bitnami/mariadb/sbin/mysqld (mysqld 10.3.22-MariaDB) starting as process 1 ... mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Using Linux native AIO mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Uses event mutexes mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Number of pools: 1 mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Using SSE2 crc32 instructions mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Completed initialization of buffer pool mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: 128 out of 128 rollback segments are active. mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Creating shared tablespace for temporary tables mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Waiting for purge to start mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: 10.3.22 started; log sequence number 1625457; transaction id 21 mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Loading buffer pool(s) from /bitnami/mariadb/data/ib_buffer_pool mariadb_1 | 2020-02-06 5:22:26 0 [Note] Plugin 'FEEDBACK' is disabled. mariadb_1 | 2020-02-06 5:22:26 0 [Note] InnoDB: Buffer pool(s) load completed at 200206 5:22:26 mariadb_1 | 2020-02-06 5:22:26 0 [Note] Server socket created on IP: '0.0.0.0'. mariadb_1 | 2020-02-06 5:22:26 0 [Warning] 'proxies_priv' entry '@% root@1643f97fe62c' ignored in --skip-name-resolve mode. mariadb_1 | 2020-02-06 5:22:26 0 [Note] Reading of all Master_info entries succeeded mariadb_1 | 2020-02-06 5:22:26 0 [Note] Added new Master_info '' to hash table mariadb_1 | 2020-02-06 5:22:26 0 [Note] /opt/bitnami/mariadb/sbin/mysqld: ready for connections. mariadb_1 | Version: '10.3.22-MariaDB' socket: '/opt/bitnami/mariadb/tmp/mysql.sock' port: 3306 Source distribution redmine_1 | Error executing 'postInstallation': Failed to connect to mariadb:3306 after 36 tries redmine_redmine_1 exited with code 1

このエラーからデータベース側に問題があると考え、データベースのコンテナにアクセスしました。

アクセスしたところ、ログイン及びデータベースの参照など問題なく行えたため、データベースに不具合がないことを確認(以下のコマンドが実行結果です)

docker exec -it <mariadb's ID> /bin/bash -------------------------------------------------------------------------------- I have no name!@c97be876fcf9:/$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.3.22-MariaDB Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | bitnami_redmine | | information_schema | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.001 sec) MariaDB [(none)]>

そこで"docker-compose.yml"のファイルの記述に問題があると考え、外部向けにポートを開放する記述をmariadbコンテナに記述してみましたが、うまく動きません。

ports: - '3306:3306'

原因がredmineにあるのかdockerそのものにあるのか不明なため別の"docker-compose.yml"を作成しました。(以下の手順で作成)

docker-compose down -v rm -rf docker-compose.yml vi docker-compose.yml

以下を記述しました。

version: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb db: image: mysql:latest restart: always environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' ~

上記の内容は WordPress と MySQLとそれぞれ違うアプリとDBを用いたコンテナを準備し、同様に実行しましたが、こちらでもデータベースに接続できませんでした。

wordpressのほうでは8080にアクセスすると、初期画面までは表示可能でした。

環境に問題があるのかと考え、上記の2ファイル(redmine版とwordpress版)をWindows環境のDocker for Windowsで実行すると、問題なく実行できました。

伺いたいこと

このことからアプリコンテナの問題でもなく、DBコンテナにも問題がなく、Dockerの実行環境に問題があるところまで突き止めましたが、どこを疑えばいいか皆目見当がつきません。

この問題について、何か心当たりのいらっしゃる方がいましたらアドバイスを頂けますと幸いです。

恐縮ですがよろしくお願い申し上げます。

追伸 20200-02-07

以下を試しました

systemctl stop firewalld systemctl restart docker

通信ができましたが、firewallの何が悪いのかまだ謎です。。。

こちらも参考としてリンクを張っておきます。
https://github.com/moby/moby/issues/32138

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました!

マスカレードをfirewallに許可します

firewall-cmd --zone=public --add-masquerade --permanent firewall-cmd --reload systemctl restart docker

上記でダメでしたら下記も試してみてください。
私は上記だけで大丈夫でした。

firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --permanent --zone=trusted --add-port=4243/tcp firewall-cmd --reload systemctl restart docker

投稿2020/02/07 02:13

yuuuuuuuuuuuuuu

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問