WordPressをローカル環境で構築する(2)
前回Ubuntuのインストールを行ったので、今回はUbuntuにDockerをインストールして、Docker上にWordPress環境を構築します。
Dockerのインストール
Ubuntuを立ち上げて作業を行います。基本的に下記リンクの手順でDockerをインストールしました。
Install Docker Engine on Ubuntu
コンテナ作成のためのファイルの準備
参考:【入門】Dockerで環境構築|WordPress環境をローカルPCに作ろう!
最初は参考元に記載されていたymlファイルをそのままコピーしてコンテナを作成していましたが、WordPressを立ち上げてできたサイトを見た際にPHPエラーが発生してしまいました。
Warning: chmod(): Operation not permitted in /var/www/html/wp-admin/includes/class-wp-filesystem-direct.php on line 173
Warning: touch(): Utime failed: Operation not permitted in /var/www/html/wp-admin/includes/class-wp-filesystem-direct.php on line 529
権限が無いということだったのでファイルの権限を確認したところ、権限を持っているユーザーID(UID)が1000となっていました。
調べたところ、Ubuntuでの管理者権限を持っているUIDが1000で、Dockerコンテナ内ではUIDが0であるrootとなっていたようでした。このUIDのズレによってエラーが起きていたようです。
このズレを解消するために、Dockerfileを作成して再度イメージの再構築を行いました。
docker-compose.yml
services:
db:
container_name: mysql8
build:
context: .
dockerfile: ./mysql/Dockerfile
restart: always
environment:
MYSQL_ROOT_PASSWORD: password # rootユーザのパスワード
MYSQL_DATABASE: db_local # WordPress用データベース名
MYSQL_USER: wp_user # WordPress用データベース接続ユーザ名
MYSQL_PASSWORD: password # WordPress用データベース接続パスワード
wordpress:
container_name: wordpress
build:
context: .
dockerfile: ./wordpress/Dockerfile
restart: always
depends_on:
- db
ports:
- 10090:80
environment:
WORDPRESS_DB_HOST: db:3306 # データベースサーバ名:ポート番号
WORDPRESS_DB_USER: wp_user # WordPress用データベース接続ユーザ名(dbの内容に合わせる)
WORDPRESS_DB_PASSWORD: password # WordPress用データベース接続パスワード(dbの内容に合わせる)
WORDPRESS_DB_NAME: db_local # WordPress用データベース名(dbの内容に合わせる)
WORDPRESS_DEBUG: 1 # デバッグモードON
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
- ./html:/var/www/html
phpmyadmin:
container_name: phpmyadmin_ingrid
build:
context: .
dockerfile: ./phpmyadmin/Dockerfile
restart: always
depends_on:
- db
ports:
- 10099:80
Dockerfile(wordpress)
wordpressコンテナでUIDが1000であるユーザーを追加します。
FROM wordpress:latest
COPY php.ini /usr/local/etc/php/
RUN apt-get update && \
apt-get install vim -y && \
groupadd -g 1000 app_user && \
useradd -m -s /bin/bash -u 1000 -g 1000 app_user
USER app_user
Dockerfile(mysql)
FROM mysql:8.0
Dockerfile(phpadmin)
FROM phpmyadmin:latest
ファイル構成は下記となります。(root/は任意の場所でOK)
root/
├ docker-compose.yml
├ mysql/
│ └ Dockerfile
├ phpmyadmin/
│ └ Dockerfile
└ wordpress/
└ Dockerfile
これでymlファイルがある場所で docker compose up -d
を実行することでローカル環境が作成されます。
ディスカッション
コメント一覧
まだ、コメントがありません