WordPress のインストールをできるだけ楽にするためコマンド経由でやってみた例。
mkcert を使った独自 SSL 証明書で SSL 通信にも対応。
project ├ docker │ ├ app │ | ├ cert │ | | ├ XXX.XXX.XXX.XXX-key.pem │ | | └ XXX.XXX.XXX.XXX.pem │ | ├ conf │ | | └ php74.ini │ | ├ conf.d │ | | ├ charset.cnf │ | | ├ html.conf │ | | └ my_ssl.conf │ | └ Dockerfile │ ├ db │ | ├ conf.d │ | | └ charset.cnf │ | └ Dockerfile │ └ docker-compose.yml └ production // appコンテナに載せるプログラムファイルを格納
version: '3' services: db: container_name: wp_db build: ./db/ image: laravel_mysql80_db environment: MYSQL_ROOT_PASSWORD: pass MYSQL_DATABASE: wp MYSQL_USER: docker MYSQL_PASSWORD: docker TZ: 'Asia/Tokyo' ports: - 3306:3306 app: container_name: wp_app build: ./app/ image: wordpress_centos7_php74_app ports: - 8080:80 - 4430:443 volumes: - ../production:/var/www/production/ tty: true stdin_open: true privileged: true command: /sbin/init depends_on: - db
FROM centos:7 RUN yum -y update && \ yum -y install httpd && \ yum -y install epel-release && \ yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \ yum -y install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-pdo php-gd php-xml php-mysqlnd php-bcmath php-json php-pecl-zip php-imap && \ yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm && \ yum -y install --enablerepo=mysql80-community mysql-community-server && \ yum -y install zip unzip && \ yum -y install less && \ yum -y install mod_ssl openssl ENV LANG=ja_JP.UTF-8 LC_ALL=C LANGUAGE=ja_JP:ja COPY ./cert/XXX.XXX.XXX.XXX.pem /etc/pki/tls/certs/XXX.XXX.XXX.XXX.pem COPY ./cert/XXX.XXX.XXX.XXX-key.pem /etc/pki/tls/certs/XXX.XXX.XXX.XXX-key.pem COPY ./conf/php74.ini /etc/php.ini COPY ./conf.d/html.conf /etc/httpd/conf.d/html.conf COPY ./conf.d/my_ssl.conf /etc/httpd/conf.d/my_ssl.conf COPY ./conf.d/charset.cnf /etc/my.cnf.d/charset.cnf RUN chmod 644 /etc/httpd/conf.d/html.conf && \ mkdir /var/log/php && \ chown apache:apache /var/log/php && \ rm -rf /var/www/html && \ ln -s /var/www/production /var/www/html && \ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \ chmod +x wp-cli.phar && \ mv wp-cli.phar /usr/local/bin/wp && \ mkdir /var/www/wp && \ wp core download --locale=ja --path=/var/www/wp # httpd RUN systemctl enable httpd
WP-CLI を使って、コマンドラインから WordPress のインストールを行っています。
参考サイト
wp core download –locale=ja –path=/var/www/wp
このコマンドで、WordPress のコアファイルをダウンロードしています。パスで「/var/www/production」を指定すると何故かうまく動作しなかったので、一度「/var/www/wp」にダウンロードしています。
後ほど、Web コンテナ内に入って、production への移動や、WordPress のインストールの続きを行います。
予め mkcert で作っておいた「サーバ証明書」と「秘密鍵」を設置。
予め PHP7.4 の Web コンテナを立ち上げるなどして、php.ini をコピーし、設定したい内容を書き換えて設置。
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
<VirtualHost _default_:443> DocumentRoot "/var/www/html" ServerName XXX.XXX.XXX.XXX:443 SSLCertificateFile /etc/pki/tls/certs/XXX.XXX.XXX.XXX.pem SSLCertificateKeyFile /etc/pki/tls/certs/XXX.XXX.XXX.XXX-key.pem </VirtualHost>
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin init-connect='set names utf8' [client] loose-default-character-set = utf8mb4
FROM mysql:8.0 RUN apt-get update && \ apt-get -y install locales-all ENV LANG=ja_JP.UTF-8 LC_ALL=C LANGUAGE=ja_JP:ja COPY ./conf.d/charset.cnf /etc/my.cnf.d/charset.cnf
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin init-connect='set names utf8' [client] loose-default-character-set = utf8mb4
Docker Quickstart Terminal を起動する。
# project/docker ディレクトリへ移動 cd project/docker # コンテナの作成&起動 # -d をつけることでバックグラウンドでコンテナを起動 # --build をつけることでイメージを作成 docker-compose up -d --build # コンテナの一覧を確認 docker-compose ps # IP アドレスを調べる docker-machine ip # 192.168.99.100 なら、以下でアクセス可能になる # http://192.168.99.100:8080 # 2回め以降は、バックグラウンドでコンテナを起動するだけでよい docker-compose up -d # app コンテナに入る docker container exec -it wp_app /bin/bash # db コンテナの DB に接続できるか確認 mysql -h wp_db --port 3306 -u docker -pdocker -D laravel_db exit
# WordPress のコアファイルがダウンロードされているのを確認 ls -l /var/www/wp # WP-CLI が動作するか確認 wp --info # wp の中身を production に移動 mv /var/www/wp/* /var/www/production/ # wp の削除 rm -rf /var/www/wp # wp-config.php の生成 wp core config --dbname='wp' --dbuser='docker' --dbpass='docker' --dbhost='wp_db' --path=/var/www/production # WordPress をインストール wp core install --url='http://XXX.XXX.XXX.XXX:8080' --title='てすと' --admin_name='admin' --admin_password='admin' --admin_email='test@example.com' --path=/var/www/html
これで WordPress のインストールが完了します。
あとは、ブラウザでローカルの URL にアクセスして WordPress のページが表示されることを確認します。
http://XXX.XXX.XXX.XXX:8080 http://XXX.XXX.XXX.XXX:8080/wp-admin