Closed zazazazazazazaz closed 3 years ago
mysql, php周りでエラーが起きているので,DBで問題が起きていると考えられる.
version: '3.3'
services:
db: # DO NOT CHANGE THIS LINE
image: mysql:5.7
hostname: database # DO NOT CHANGE THIS LINE
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 8MvAMcDAirP8
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: DDzk6ERU33Rc
wp:
depends_on:
- db
image: wordpress:latest
hostname: wordpress
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: database:3306 # DO NOT CHANGE THIS LINE
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: DDzk6ERU33Rc
WORDPRESS_DB_NAME: wordpress
volumes:
db_data:
お疲れさまです、yrfwです。
「hostnameでつながらない!」にて docker では hostname を用いた通信は network を設定しないと実現できないことが原因としてあると考えました。
そこで自動作成される network ではなく、直接アドレスを割り当てそれを解決できるように extra_hosts
にて追記することで通信を可能にしました。
以下に改変後の docker-compose.yml を示します。
services:
db: # DO NOT CHANGE THIS LINE
image: mysql:5.7
hostname: database # DO NOT CHANGE THIS LINE
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 8MvAMcDAirP8
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: DDzk6ERU33Rc
networks:
container-net:
ipv4_address: 172.30.0.2
wp:
depends_on:
- db
image: wordpress:latest
hostname: wordpress
ports:
- 8000:80
restart: always
environment:
WORDPRESS_DB_HOST: database:3306 # DO NOT CHANGE THIS LINE
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: DDzk6ERU33Rc
WORDPRESS_DB_NAME: wordpress
networks:
container-net:
ipv4_address: 172.30.0.3
extra_hosts:
- database:172.30.0.2
networks:
container-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.30.0.0/24
volumes:
db_data:
以上、ご確認のほどよろしくお願いいたします。
概要
DockerでシュッとWordpressを構築しようとしています。どうしてもdocker-compose.ymlで指定したホスト名でデータベースに接続したいのですが、うまく立ち上がりません。原因を特定して修正してください。
前提条件
~/wordpress/docker-compose.ymlの4, 6 25行目に変更を加えないでください。末尾に# DO NOT CHANGE THIS LINEというコメントがあります。
初期状態
~/wordpress/docker-compose.ymlを用いてdocker-compose upするとwordpressのコンテナがデータベース接続エラーのログを残して立ち上がらない。
終了状態
curl localhost:8000 -Lで正常に200レスポンスが返ってくる。