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

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

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

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

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

Docker

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

Q&A

解決済

1回答

1023閲覧

Dockerで構築したデータベースコンテナへの接続方法

taxi

総合スコア14

docker-compose

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

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

Docker

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

0グッド

0クリップ

投稿2019/07/06 07:58

やりたいこと

Docker初心者です。
Docker for MacでLAMP環境を構築してWordPressをインストールしたいのですが、データベースにうまく接続できません。
wp-config.phpの「DB_HOST」の設定がうまく行ってないのだと思うのですが、そもそもどのようにデータベースコンテナへ接続するのか理解できず行き詰まってしまいました。

ネット上の「Dockerで簡単にLAMP環境構築」という感じの記事をいくつか参考に試しているのですが、PHPからデータベースを操作する環境を構築する方法がイマイチ理解できません。
これまでMAMP環境で作業していましたがMacOSXでやるのが辛くなってきたので、できればDockerに乗り換えたいと考えています。

不勉強は承知のうえですが、ヒントでも結構ですのでご教示いただけますと幸いです。

環境

MacOSX Sierra
Docker version 18.09.2, build 6247962
docker-compose version 1.23.2, build 1110ad01

以下のdocker-compose.ymlでコンテナを立ち上げています。

# docker-compose.yml version: '3' services: db: image: mariadb:latest volumes: - ./db:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: pasword php: depends_on: - db image: php:7.2-apache volumes: - ./php.ini:/usr/local/etc/php/php.ini - ./htdocs:/var/www/html ports: - "8000:80" restart: always phpmyadmin: depends_on: - db image: phpmyadmin/phpmyadmin environment: PMA_HOST: db restart: always ports: - "8888:80" volumes: db:

試したこと&その結果

コンテナを起動した状態で、「http://localhost:8000/wordpress」にアクセスするとセットアップの言語選択画面が表示されのですが、その後データベース名等の入力画面(wp-config.phpの設定)でデータベースのホスト名に何を入れるのかがわかりません。以下の入力を試しましたが、いずれも「サイトに技術的な問題が発生しています」と表示されます。

  • db:3306
  • localhost:3306

PHPコンテナの代わりにWordPressコンテナで試したところ、こちらはホスト名に「db:3306」を設定して正常にインストール・動作確認できました。

ここまでやって、WordPress・PHPそれぞれのコンテナのコンソールからmysqlコマンドを打ってみたところ、どちらでも「bash: mysql: command not found」と言われ、どうやって接続しているのかと訳がわからなくなってしまいました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

db:3306

dockerコンテナ同士の通信ではdocker-composeのサービス名がそのままホスト名になります。
だから db:3306 が正解です。

手前味噌ですが下記の記事を書いていますので参考ください。

https://qiita.com/dyoshikawa/items/05d627b962da35f7d5b6

bash: mysql: command not found

コンテナ内でmysqlコマンドをインストールしてないだけです。
WordPressはこれを使っているのではなくPHPのmysqlドライバを使用して接続しているはずです。
mysqlコマンドが使いたければ別途インストールが必要です。

これまでMAMP環境で作業していましたがMacOSXでやるのが辛くなってきたので、できればDockerに乗り換えたいと考えています。

と仰っていますがDockerもそれなりに学習することは多いですから、一概に現行のMAMPより楽かというと状況によるかと思います。
最初に手こずったり格闘したりする覚悟があれば価値のある投資だとは思います。

投稿2019/07/06 09:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

taxi

2019/07/08 08:54

お返事が遅れて申し訳ありません。 コメントありがとうございます。 また記事も読ませていただきました。 結果的には無事接続することができました。 >WordPressはこれを使っているのではなくPHPのmysqlドライバを使用して接続しているはずです。 これがヒントになりました。 PHPのコンテナで phpinfo を実行したところ、mysqliがなくPDOもSQLiteだけでした。 WordPress公式のDockerfileを参考に、mysqliが入るようにPHPのDockerfileを修正したところ、ホスト名「db:3306」で問題なく接続できました。 これまでCentOSなどは触った経験はあるのですが、PHPのコンテナなのにパッケージ一覧にPHP関連のパッケージが見当たらないとか、パッケージの追加にdocker-php-ext-installを使う等、勝手が違うことばかりでかなり悪戦苦闘しました。 WEB上の記事を読んでいて、「へー、docker-compose.yml作ってup -dすれば簡単に環境ができるんだ」などとヌルい感覚でいましたが、自分がほしい環境は結局自分で作る必要があることがよくわかり、非常に良い勉強になったと思います。 今後もGitHub等のDockerfileを参考にいろいろ試して、その上でDockerへ移行するかどうか判断しようと思います。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2019/07/08 23:18

DockerではありませんがWordPress案件ではVagrantのVCCWが使われることが多いと思います。 WordPressに必要なPHPExtenstionは入っていますしWordmoveのようなツールも同梱です。
taxi

2019/07/08 23:41

情報ありがとうございます。 Vagrantの名前は目にしたことがありますが、詳しく調べたことはありませんでした。 社内のサーバやシステムのメンテナンス、サイト制作に携わることはありますがメインの業務ではないため、中々きちんとした知識を身につけるに至っていません。 対処的に作業を行うことが多く基本的なことが理解できていない場合もあり、今後も質問等させていただく機会もあると思いますので、回答していただける内容の場合はまた宜しくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問