kstm-su / ictsc_2020_yrfw_pre

0 stars 0 forks source link

hostnameでつながらない!! #6

Closed zazazazazazazaz closed 3 years ago

zazazazazazazaz commented 3 years ago

概要

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レスポンスが返ってくる。

z1ploc commented 3 years ago

mysql, php周りでエラーが起きているので,DBで問題が起きていると考えられる.

arsley commented 3 years ago
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:
arsley commented 3 years ago

https://qiita.com/manabuishiirb/items/26de8c9740a1d2c7cfdd

arsley commented 3 years ago

お疲れさまです、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:

以上、ご確認のほどよろしくお願いいたします。

arsley commented 3 years ago

https://hacknote.jp/archives/30779/ https://qiita.com/satodoc/items/188a387f7439e4ec394f https://sagantaf.hatenablog.com/entry/2020/02/11/002149