私はと同様の問題持ってドッカー作曲を使用して、ポート3307上で実行MySQLをしかし、どちらか、私は木やここソリューションが動作していないため、木材を見ることができません。
私は、次のドッキングウィンドウ-compose.ymlファイルを持っています:
version: '3'
services:
db:
image: mysql:5.7
container_name: squirrels_db
volumes:
- db_data:/var/lib/docker/volumes/squirrels_db_data/_data
restart: always
ports:
# <Port exposed> : <MySQL Port running inside container>
- 3310:3306
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: mydb_user
MYSQL_PASSWORD: password
volumes:
- ./var/lib/docker/volumes/squirrels_db_data/_data
networks:
internal-net:
ipv4_address: 172.29.0.11
wordpress:
image: wordpress:latest
container_name: squirrels_web
depends_on:
- db
ports:
- 8000:80
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: mydb_user
WORDPRESS_DB_NAME: mydb_name
WORDPRESS_DB_PASSWORD: password
volumes:
- ./data/wp_content:/var/www/html/wp-content
- ./config/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
networks:
nginx-proxy:
internal-net:
ipv4_address: 172.29.0.12
# Names our volume
volumes:
db:
networks:
nginx-proxy:
external:
name: nginx-proxy
internal-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.29.0.0/16
注:私はここにユーザー名とパスワードを変更しているし、最終的に.envファイルでそれらを持っています
私が打つときのhttp:// localhostを:8000は、私はWordPressがメッセージ「エラーがデータベース接続を確立する」と(ドッキングウィンドウ-コンログから)ログに、次の配信見ています:
PHPの警告:mysqliの:: __構築物():(HY000 / 2002):拒否した(2002)接続:接続ライン22のMySQL接続エラーに標準入力コードで拒否しました
この正式ナット私を駆動し、ちょうど私が何かを明らかに行方不明です知ることによって、全く助けません!だから、任意の観察結果や提案をありがたく受け取りました
感謝
私はそれが働いて得ることができました。ここでは作業ファイルだ - 私は下の私の変更を説明します:
version: "3"
services:
db:
image: mysql:5.7
container_name: squirrels_db
volumes:
# You prepended with db_data: but volume was called db – scroll down to volumes to see my fix
- db_data:/var/lib/docker/volumes/squirrels_db_data/_data
restart: always
ports:
# <Port exposed> : <MySQL Port running inside container>
- 3310:3306
environment:
MYSQL_ROOT_PASSWORD: password
# This is likely the isse - you called it wordpress but tried to connect to mydb_name in the wordpress container
MYSQL_DATABASE: mydb_name
MYSQL_USER: mydb_user
MYSQL_PASSWORD: password
# REMOVE BELOW 2 LINES - you declared above
# volumes:
# - ./var/lib/docker/volumes/squirrels_db_data/_data
networks:
internal-net:
ipv4_address: 172.29.0.11
wordpress:
image: wordpress:latest
container_name: squirrels_web
depends_on:
- db
ports:
- 8000:80
restart: always
environment:
WORDPRESS_DB_HOST: db # db:3306 is fine but that's default so removed
WORDPRESS_DB_USER: mydb_user
WORDPRESS_DB_NAME: mydb_name
WORDPRESS_DB_PASSWORD: password
volumes:
- ./data/wp_content:/var/www/html/wp-content
- ./config/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
networks:
nginx-proxy:
internal-net:
ipv4_address: 172.29.0.12
# Names our volume
volumes:
# FIX: renamed from db to db_data. Added {} to declare an empty volume
db_data: {}
networks:
nginx-proxy:
external:
name: nginx-proxy
internal-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.29.0.0/16
変更
私はあなたのインデントは大丈夫だったと思う - しかし、私は最初のテストとしてこれを変更しました
あなたのデシベルのコンテナ内で宣言2つのボリュームキーを持っていました。ボリュームパスを付加:第一、第二のDB_DATAが欠落し、一見正しかったです。
あなたの音量をデシベルと命名されましたが、DB_DATAとして(ポイント2のように)使用されていました
あなたのデータベース名が一致しませんでした。で、あなたは、セットアップのデシベルのワードプレスと呼ばれ
MYSQL_DATABASE: wordpress
、その後に接続しようとしたmydb_name
時にWORDPRESS_DB_NAME: mydb_name
簡単な解決策
上記の作品が、あなたは間違いなくネットワークが必要なのでしょうか?以下も動作し、はるかに簡単ですします。
version: "3"
services:
db:
image: mysql:5.7
container_name: squirrels_db
volumes:
- db_data:/var/lib/docker/volumes/squirrels_db_data/_data
restart: always
ports:
- 3310:3306
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb_name
MYSQL_USER: mydb_user
MYSQL_PASSWORD: password
wordpress:
image: wordpress:latest
container_name: squirrels_web
depends_on:
- db
ports:
- 8000:80
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: mydb_user
WORDPRESS_DB_NAME: mydb_name
WORDPRESS_DB_PASSWORD: password
volumes:
- ./data/wp_content:/var/www/html/wp-content
- ./config/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
volumes:
db_data: {}