docker + nginx + php-fpm で wordpress のリソース取得で 403 が返ってくる話


docker で wordpress 立てたいと思い、nginx + php-fpm の構成でやってみたら、全くスタイルが当たってなくてビビった。
リソース(.css、.js)の取得で 403 エラーが返ってきてる。

PHP は動いているのにリソースが取れないってどういうこと?
Webは得意分野じゃないから、パーミッションの問題、ユーザーの問題(コンテナ間のユーザーの相違)を疑っていろいろ試してみたけど解決せず。

1ヶ月くらい経って改めて試してみたら、めちゃくちゃ初歩的なミスだったんだけど、docker 初心者は意外と同じミスしそうな気がしたので、メモ。

結論からいうと、docker-compose.yml で nginx からも php からも wp ルートをマウントしてあげないとダメだよって話。

ホスト側の app ディレクトリが wp ルートの場合。

<悪い例>

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    depends_on:
      - app
    volumes:
      - ./web/nginx/default.conf:/etc/nginx/conf.d/default.conf

  app:
    image: php:7-fpm-alpine
    volumes:
      - ./app:/var/www/html
    depends_on:
      - db

  ...

<上手くいく例>

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    depends_on:
      - app
    volumes:
      - ./web/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./app:/var/www/html # ←追加

  app:
    image: php:7-fpm-alpine
    volumes:
      - ./app:/var/www/html
    depends_on:
      - db

  ...

とあるサイトで解説されていたのを参考に最初の設定にしてたんだけど、まんまとハマった。
※他にも違う解決方法があるんだろう。

これで、無事リソースが取得でき、スタイルが当たるようになりました。

終わり。