web-dev-qa-db-ja.com

Wordpress on docker-compose no run

これは私のdocker-compose.ymlです

version: '2'
services:
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_PASSWORD: example
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

サービスは正常に実行されますが、数秒後、wordpressコンテナが停止します。

これは私のdockerログですwordpressコンテナ:

WordPress not found in /var/www/html - copying now...
Complete! WordPress has been successfully copied to /var/www/html

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10


MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

なぜこれが起こるのですか?

10
alvarezsh

解決策:

Mysqlコンテナをwordpressコンテナにリンクすることを忘れないでください:

links:
   - db:mysql

このような:

version: '2'
services:
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    links:
      - db:mysql
    environment:
      WORDPRESS_DB_PASSWORD: example
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

この重要な詳細は WordPressイメージの公式Dockerhubページ には記載されていません

7
Vingtoft

これ anwser は私のために働きます、なぜなら私はそのanwserに投票するのに十分な評判を持っていなかったので、私はそれをここにコピーします:

depends_on: - dbこれは、データベースコンテナがwordpressコンテナの前に完全にロードされていることを確認するだけです。 dbコンテナをwordpressコンテナからリンクして、名前で参照するようにdockerに指示する必要があります。

内部でdocker-composeが行うことは、ipdockerがdbcontainerを提供し、/etc/hostsエントリをwordpressコンテナに追加して、名前で参照できるようにすることです。

だからこれをwordpressセクションlinks: - dbに追加してみてください

4
NOZUONOHIGH

作成ファイルwordpressサービス(パスワード以外、投稿に表示))でDBホスト(およびその他の必要なMySql属性)を設定していますか?例:

environment:
  WORDPRESS_DB_PASSWORD: example
  WORDPRESS_DB_Host: db
  WORDPRESS_DB_USER: {xxx}
  WORDPRESS_DB_NAME: {xxx}
  WORDPRESS_TABLE_PREFIX: {xxx}

特に、セットアップではdbである必要がある「Host」値。追加するのは良い考えですが、リンクを行う必要はありません。

depends_on:
  - db

wordpressサービスブロックに、依存関係の順序を設定して、wordpressコンテナの前にdbコンテナを開始します。(links属性は、同じですが、物事をシンプルにしようとしています。)

注意:

デフォルトでは、Composeはアプリに単一のネットワークを設定します。サービスの各コンテナはデフォルトのネットワークに参加し、そのネットワーク上の他のコンテナから到達可能であり、コンテナ名と同じホスト名でそれらによって検出可能です。

リンクを使用すると、別のサービスからサービスに到達できる追加のエイリアスを定義できます。これらは、サービスが通信できるようにするために不要です-デフォルトでは、どのサービスもそのサービスの他のサービスに到達できます名前

https://docs.docker.com/compose/networking/#/links

ほとんどの場合、デフォルトで問題なく動作するため、自分が何をしているかを本当に理解していない限り、ネットワークをいじることはありません。特別な場合がある場合は、後でいつでも最適化できます。

2
ldg

'db:'の下にこれらを追加すると、問題が解決しました。

    command: --default-authentication-plugin=mysql_native_password
    restart: always
1
Arlak

前に述べたように、追加する必要があります

depends_on:
  - db

しかし、この後も接続の問題に関するメッセージが表示されます。そして、この明らかな問題のみ-2番目のオプション:

networks:
    local:

この解決エラーPHP警告:mysqli :: __construct():php_network_getaddresses:getaddrinfo failed:22行目の標準入力コードでの名前解決の一時的な失敗

0
Ivan Vovk

Ymlを使用しませんでしたが、同じログがあり、これは機能しませんでした

docker run -dP --link elated_yonath -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

しかし、リンクされたコンテナに:mysqlを追加する必要があることがわかりました

docker run -dP --link elated_yonath:mysql -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

今、それは始まりました。

0
libik