小さなdocker-compose.yml
を作成しました。これは、小さなWordPress=インスタンスを展開するチャームのように機能していました。次のようになります。
wordpress:
image: wordpress:latest
links:
- mysql
ports:
- "1234:80"
environment:
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: "password"
WORDPRESS_DB_Host: mariadb
MYSQL_PORT_3306_TCP: 3306
volumes:
- /srv/wordpress/:/var/www/html/
mysql:
image: mariadb:latest
mem_limit: 256m
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: "password"
volumes:
- /srv/mariadb:/var/lib/mysql
しかし、今すぐ起動すると(おそらく、Dockerバージョン1.9.1へのdockerアップデート以降、ビルドa34a1d5
)、失敗します
wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
wordpress_1 |
wordpress_1 | MySQL Connection Error: (2002) Connection refused
/etc/hosts
のwordpress_1
をcatすると、MySQLのエントリがあります:
172.17.0.10 mysql 12a564fdbc56 mariadb
そして、MariaDBサーバーにpingを実行できます。
私がdocker-compose up
の場合、WordPress=がインストールされ、数回再起動した後、MariaDBコンテナが印刷されます:
Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
実行されていることを示すのはどれですか?
MariaDBコンテナーに接続できるようにするには、WordPressを取得するにはどうすればよいですか?
この動作の理由は、おそらく最近のカーネルとドッカーの更新に関連していたでしょう。他のdocker-composeセットアップで、他のいくつかの接続の問題を認識しました。そのため、(Dockerサービスだけでなく)サーバーを再起動し、それ以降このような問題は発生しませんでした。
この問題を解決するには、最初に行うことは:
次のコードをwordpress&データベースコンテナー(docker-composeファイル内)に追加します。
restart: unless-stopped
これにより、wordpress container to connect to connect。docker engine
Sudo restart docker
または(ubuntu 15+の場合)
Sudo service docker restart
ここでは、MariaDBでwordpressをセットアップするために機能する完全な構成:
version: '2'
services:
wordpress:
image: wordpress:latest
links:
- database:mariadb
environment:
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_NAME=mydbname
- WORDPRESS_TABLE_PREFIX=ab_
- WORDPRESS_DB_PASSWORD=password
- WORDPRESS_DB_Host=mariadb
- MYSQL_PORT_3306_TCP=3306
restart: unless-stopped
ports:
- "test.dev:80:80"
working_dir: /var/www/html
volumes:
- ./wordpress/:/var/www/html/
database:
image: mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=mydbname
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=password
restart: unless-stopped
ports:
- "3306:3306"
私はほとんど同じ問題を抱えていましたが、Wordpressコンテナを再起動するだけで助かりました:
$ docker restart wordpress
これが多くの人に役立つことを願っています。
私もここで問題を抱えていました。 Docker-composeを使用して、コントローラーとしてphpmyadmin
とjwilder/nginx-proxy
を含む、単一の(マイクロ)仮想プライベートサーバー上に複数のwordpress Webサイトをセットアップしました。
$ docker logs XXXX
は、関心のある領域を示すのに役立ちます。私の場合、MariaDBデータベースは常に再起動し続けます。
そのようなものはすべて、マイクロ512MシングルCPUサービスには収まらないことがわかりました。サイズが問題であることを直接伝えるエラーメッセージを受信することはありませんでしたが、物事を追加した後、すべてのデータベースの起動時にメモリが不足していることに気付きました。 1Gb、1 CPUサービスへのアップグレードは問題なく機能しました。
私はあなたのdocker-compose.ymlを使用していましたが、同じ問題がありました。再起動しただけでは解決しませんでした。ログを1時間近く調べたところ、問題が見つかりました:wordpress
サービスが完全に開始する前にmysql
サービスの接続を開始しました。 depend_onを追加するだけでは役に立ちません。 Yを開始する前にコンテナXを待機するDocker Compose
回避策は、Upの前にdb
サーバーを起動することです。完全に起動したら、docker-compose up
を実行します。または、外部サービスを使用します。
私の場合、MariaDbではなくMysqlを使用していますが、同じ問題がありました。 MySQLバージョンをアップグレードした後、正常に動作します。
私のオープンソースのdocker-compose設定を見ることができます: https://github.com/rimiti/wordpress-dockerized-environment