次のサービスで構成されるDockerスタック内にWordpressサイトを作成しようとしています。
wordpress
-Wordpressサイト自体db
-MySQLコンテナ私は以下を持っていますstack.yml
ファイル:
version: '3.1'
networks:
abtehnic:
services:
db:
image: mysql:latest
restart: always
networks:
- abtehnic
environment:
MYSQL_ROOT_PASSWORD: XXXXX
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: barbu123
wordpress:
image: abtehnic-wordpress
depends_on:
- db
restart: always
ports:
- 80
environment:
WORDPRESS_DB_Host: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_PASSWORD: barbu123
networks:
- abtehnic
volumes:
- ./source:/var/www/html
次のコマンドでスタックをデプロイします。
$ docker stack deploy -c stack.yml abtehnic
docker ps
コマンドは以下を出力します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
256e65fe2c4c mysql:latest "docker-entrypoint..." About a minute ago Up About a minute 3306/tcp abtehnic_db.1.mo0xp17adt2jocu9yivkzg19g
26481d8bab95 wordpress:4.8 "docker-entrypoint..." About a minute ago Up About a minute 80/tcp abtehnic_wordpress.1.tiikrjwm1kcmxjg7v74vrcquw
私はマッピングされたポートを次のように見つけようとしています:
$ docker port <container_id for wordpress>
そしてその出力は空です。また、docker logs <container_id_for_wordpress>
以下を取得します。
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22
Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 22
MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 22
MySQL Connection Error: (2002) Connection refused
Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 22
MySQL Connection Error: (2002) Connection refused
MySQL Connection Error: (2002) Connection refused
Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 22
AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.1.3. Set the 'ServerName' directive globally to suppress this message
AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.1.3. Set the 'ServerName' directive globally to suppress this message
[Sat Oct 28 16:05:32.189285 2017] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.31 configured -- resuming normal operations
[Sat Oct 28 16:05:32.189321 2017] [core:notice] [pid 1] AH00094: Command line: 'Apache2 -D FOREGROUND'
ここに私の質問があります:
wordpress
コンテナがdb
コンテナにアクセスできないのはなぜですか?depends_on:
- db
wordpressコンテナの前にデータベースコンテナが完全にロードされていることを確認します。db
コンテナをwordpress
コンテナから参照にリンクするようにdockerに指示する必要があります名前でそれを。
内部でdocker-composeが行うことは、ip dockerがdb
コンテナーを取得し、/etc/hosts
エントリーをwordpress
コンテナーに追加して、名前で参照できるようにすることです。
これをwordpressセクションに追加してみてください
links:
- db
あなたがdocker port 26481d8bab95
のようなことをしていると私は仮定します、あなたの質問に従ってあなたはポート80を定義したので、あなたの答えはポート80です:
# docker run -d -p 80:80 wordpress
dc9e4aab1015eb5d82cf489e2943d76084faceaf3093bc3238964d6cfa81ab1c
# docker port dc9e4aab1015eb5d82cf489e2943d76084faceaf3093bc3238964d6cfa81ab1c
80/tcp -> 0.0.0.0:80
#
スタックしてもしなくても、docker port
を使用できるはずです。
mysqld
はhttpd
(ワードプレス)に比べて開始に時間がかかるため、エラーが表示されます