🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
docker-compose

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

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

Docker

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

Q&A

解決済

1回答

589閲覧

Dockerのアプリコンテナとデータベースコンテナを接続したい

mnmnmmmn

総合スコア18

docker-compose

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

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

Docker

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

0グッド

0クリップ

投稿2021/01/21 05:46

前提・実現したいこと

Dockerでアプリケーションとデータベースを別のコンテナで作成し、アプリコンテナからデータベースコンテナにアクセスしたいです。
アプリケーションはDjango、データベースはMariaDBを使用しています。

発生している問題・エラーメッセージ

各コンテナはエラーなく稼働していますが、アプリコンテナからデータベースを確認できません。

該当のソースコード

【ディレクトリ構成】
test
├── django
│   ├── Dockerfile
│   ├── docker-compose.yml
│   └── mysite
│   └── (Djangoプロジェクトの構成ファイルやnginx・uwsgiのコンフィグファイル)
└── mariadb
. ├── docker-compose.yml
. └── initdb.d
. └── init.sql(表示するデータベースの内容)

【ファイル内容】

[test/django/Dockerfile] FROM centos:8 RUN dnf update -y RUN dnf install python3 python3-devel mariadb mariadb-server mariadb-devel nginx -y RUN dnf -y groupinstall base "Development tools" RUN pip3 install django uwsgi mysqlclient RUN cd /etc/nginx/ ; sed -i -e '37i include /home/mysite/*.conf;' nginx.conf ADD ./mysite/uwsgi.service /etc/systemd/system/ RUN systemctl enable mariadb nginx uwsgi
[test/django/docker-compose.yml] version: '3' services: app: build: . ports: - 8000:80 volumes: - /home/usr/test/django/mysite:/home/mysite tty: true stdin_open: true privileged: true command: /sbin/init networks: - django_mariadb_network networks: django_mariadb_network: external: true
[test/mariadb/docker-compose.yml] version: '3' services: mariadb: image: mariadb:latest container_name: mariadb environment: MYSQL_USER: root MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: django ports: - 3307:3307 volumes: - ./initdb.d:/docker-entrypoint-initdb.d networks: - django_mariadb_network networks: django_mariadb_network: external: true

試したこと

terminal

1$ cd /test/mariadb 2$ docker-compose up -d --build 3$ cd /test/django 4$ docker-compose up -d --build 5$ docker exec -it [djangoコンテナのID] /bin/bash 6 # mysql -u root 7 > show databases; 8 →init.sqlの内容が表示されない(データベースと接続できていない)

mariadbコンテナに入り、mysqlにrootログインする際は上記のパスワードが求められ、またinit.sqlの内容も表示されます。

不足情報等ありましたらご指摘いただければ幸いです。

補足情報(FW/ツールのバージョンなど)

Docker version 19.03.12
docker-compose version 1.25.0

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

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

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

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

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

guest

回答1

0

自己解決

sqlログイン時、下記の通りホストネームを指定することで接続が確認できました!

terminal

1(略) 2$ docker exec -it [djangoコンテナのID] /bin/bash 3 # mysql -h mariadb -u root -p 4 Enter password: 5 > show databases; 6 →init.sqlの内容が表示された

投稿2021/01/21 08:17

編集2021/01/21 08:18
mnmnmmmn

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問