DockerにLAMP環境をつくって、WordPressをインストールする
DockerでWordPressを動かすなら、ふつうは、DockerHubからWordPressイメージをpullして動かすというやりかたをするだろうし、僕もそうしてきた。
しかし、今回は、Docker上に MariaDB、Apache、PHP の環境をつくって、そこに WordPressをインストールするというのやってみた。
DockerにLAMP環境
(1) Dockerfile (phpとApache)
php.Dockerfile
FROM php:8.3-apache
# 必要なツール類
RUN apt-get update
RUN apt-get -y install wget unzip vim less tzdata
RUN docker-php-ext-install mysqli pdo pdo_mysql
COPY ./conf.php/php.ini /usr/local/etc/php/
RUN a2enmod rewrite
RUN apt-get clean
RUN echo "alias ll='ls -lF'" >> /root/.bashrc
これで、ApacheサーバーとPHPをインストールする。あと、必要なツール縷。
php.ini には、必要な初期設定を書いておいて、それをDocker内にコピーする。最後の alias コマンドが動かなかったのは、まだ原因不明である。
そら、.bashrc に書かんとあかんわなあ。(2024.08.25 追記)
(2) コンテナの作成 (MariaDB, PHP-Apache, phpMyAdmin)
docker-compose.yml
version: '3.7'
services:
web-server:
build:
dockerfile: php.Dockerfile
context: .
restart: always
volumes:
- "./www/:/var/www/"
ports:
- "8080:80"
container_name: "mylamp-web"
environment:
TZ: Asia/Tokyo
mysql-server:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
TZ: Asia/Tokyo
LANG: ja_JP.UTF-8
volumes:
- "./mysql-data:/var/lib/mysql"
- "./sql:/docker-entrypoint-initdb.d"
- "./conf.mysql/charset.cnf:/etc/mysql/conf.d/charset.cnf"
ports:
- "43306:3306"
container_name: "mylamp-mysql"
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
environment:
PMA_HOST: mysql-server
PMA_USER: root
PMA_PASSWORD: root
ports:
- "5000:80"
container_name: "mylamp-pma"
volumes:
mysql-data:
ディレクトリ構成は以下。
my-lamp/
├── conf.mysql/
│ └── charset.cnf
├── conf.php/
│ ├── apache2
│ │ └── php.ini
│ ├── cli/
│ │ └── php.ini
│ └── php.ini
├── docker-compose.yml
├── mysql-data/
├── php.Dockerfile
└── www/
└── html/
この状態で、
$ docker-compose up -d
とすることで、LAMP環境が動作する。
(3) 所有権の設定
ここで大事なことは、mylamp-webコンテナ内の /var/www/html の所有権を www-data にしておくことである。
$ cd www
$ sudo chown -R www-data:www-data html
これをしておかないと、WordPressがファイルを作成することができなくなる。(これは、WordPressのインストール後にしたほうがいいかもしれない)
それと、現在のユーザーを /etc/group にて www-data グループに入れたのち、
$ sudo chmod -R g+w html
としておいたら、現在のユーザーで各ファイルを編集可能になる。
(4) データベース・ユーザーの作成
WordPressのためのデータベース・ユーザーを作成する。
次の例は、fureaizooというデータベースの場合である。
CREATE DATABASE IF NOT EXISTS fureaizoo;
CREATE USER IF NOT EXISTS 'fureaizoo'@'%' IDENTIFIED BY 'fureaizoo';
GRANT ALL ON fureaizoo.* TO 'fureaizoo'@'%';
面倒なので、ユーザー名とパスワードも fureaizoo にしてある。
ユーザー作成のとき、ホスト名のところを ‘%’ にしてあるのは、以下の理由からである。
- ‘localhost’ にはできない。mylamp-mysqlコンテナからみて、localhostは自分自身になるから。
- ‘mylamp-web’と指定したいのだが、これはうまくいかなかった。コンテナ内では コンテナ名は使えないっぽい。
したがって、’%’としておいた。こうしておくと、すべてのホストから接続できる。
(5) WordPressのインストール
これで WordPressをインストールする準備ができた。
WordPressをダウンロードして展開し、その中のファイル群を wwwフォルダ内の html の中に入れる。
www
+-- html
+-- wp-admin/
+-- wp-content/
+-- wp-includes/
+-- index.php
+-- wp-config.php
+-- ...
ブラウザで http://localhost:8080/ とアクセスすると、データベースの接続を聞いてくるので、以下のように入力する。
データベース名: fureaizoo
ユーザー名: fureaizoo
パスワード: fureaizoo
ホスト名: mylamp-mysql
接頭辞: wp_
これで、インストールができるはず。
カテゴリー: Apache, Docker, mariadb, memo, php, wordpress
タグ: Docker, LAMP, wordpress, コンテナ
カウント: 101