web-dev-qa-db-ja.com

docker-compose wordpress mysql connection refused

小さな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/hostswordpress_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を取得するにはどうすればよいですか?

13
Harry

この動作の理由は、おそらく最近のカーネルとドッカーの更新に関連していたでしょう。他のdocker-composeセットアップで、他のいくつかの接続の問題を認識しました。そのため、(Dockerサービスだけでなく)サーバーを再起動し、それ以降このような問題は発生しませんでした。

8
Harry

この問題を解決するには、最初に行うことは:

次のコードを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

これが多くの人に役立つことを願っています。

1
gold-kou

私もここで問題を抱えていました。 Docker-composeを使用して、コントローラーとしてphpmyadminjwilder/nginx-proxyを含む、単一の(マイクロ)仮想プライベートサーバー上に複数のwordpress Webサイトをセットアップしました。

$ docker logs XXXXは、関心のある領域を示すのに役立ちます。私の場合、MariaDBデータベースは常に再起動し続けます。

そのようなものはすべて、マイクロ512MシングルCPUサービスには収まらないことがわかりました。サイズが問題であることを直接伝えるエラーメッセージを受信することはありませんでしたが、物事を追加した後、すべてのデータベースの起動時にメモリが不足していることに気付きました。 1Gb、1 CPUサービスへのアップグレードは問題なく機能しました。

1
zipzit

私はあなたのdocker-compose.ymlを使用していましたが、同じ問題がありました。再起動しただけでは解決しませんでした。ログを1時間近く調べたところ、問題が見つかりました:wordpressサービスが完全に開始する前にmysqlサービスの接続を開始しました。 depend_onを追加するだけでは役に立ちません。 Yを開始する前にコンテナXを待機するDocker Compose

回避策は、Upの前にdbサーバーを起動することです。完全に起動したら、docker-compose upを実行します。または、外部サービスを使用します。

1
Awakening Byte

私の場合、MariaDbではなくMysqlを使用していますが、同じ問題がありました。 MySQLバージョンをアップグレードした後、正常に動作します。

私のオープンソースのdocker-compose設定を見ることができます: https://github.com/rimiti/wordpress-dockerized-environment

0
Dimitri