dockerでwordpress ワンパンで構築
docker swamを利用してすぐにサービスを開始できるようにしました。
docker swarmが有効になっていない場合は有効にするために以下のコマンドを実行します。
docker swarm init
yamlを作成するに当たって、以下のサイトを参考しました
https://qiita.com/takyam/items/e92e5a6ca1548cbd58db
https://hub.docker.com/_/wordpress/
https://hub.docker.com/_/mariadb/
永続化はされていないので注意してください。
apache版
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 5556:80
depends_on:
- mysql
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
mysql:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
php-fpm版
version: '3.1'
services:
web:
image: nginx
depends_on:
- wordpress
restart: always
ports:
- 5555:80
environment:
- PHP_APP_HOST=wordpress
volumes:
- link_data:/var/www/html
- ./mysite.template:/etc/nginx/conf.d/mysite.template
command: /bin/bash -c "envsubst '$$PHP_APP_HOST' < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
wordpress:
image: wordpress:fpm
restart: always
depends_on:
- mysql
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- link_data:/var/www/html
mysql:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
volumes:
link_data:
nginx設定ファイル
cat ./mysite.template
server {
listen 80;
server_name ;
index index.php;
root /var/www/html;
location ~* /wp-config.php {
deny all;
}
location ~ \.php$ {
fastcgi_pass ${PHP_APP_HOST}:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location @wordpress {
fastcgi_pass ${PHP_APP_HOST}:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ @wordpress;
}
}
サービスを作成するには次のコマンドで実行できます。
docker stack deploy -c ./eginx.yml wordpress_enginx Ignoring unsupported options: restart Creating network wordpress_enginx_default Creating service wordpress_enginx_web Creating service wordpress_enginx_wordpress Creating service wordpress_enginx_mysql
webブラウザでアクセスすると初期状態で起動しています。

abコマンドで見てみます
ab -n 10 -c 10 http://127.0.0.1:5555/
This is ApacheBench, Version 2.3 &lt;$Revision: 1757674 $&gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: nginx/1.15.6
Server Hostname: 127.0.0.1
Server Port: 5555
Document Path: /
Document Length: 0 bytes
Concurrency Level: 10
Time taken for tests: 0.230 seconds
Complete requests: 10
Failed requests: 0
Non-2xx responses: 10
Total transferred: 3130 bytes
HTML transferred: 0 bytes
Requests per second: 43.51 [#/sec] (mean)
Time per request: 229.855 [ms] (mean)
Time per request: 22.985 [ms] (mean, across all concurrent requests)
Transfer rate: 13.30 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 2 4 1.2 4 6
Processing: 135 161 26.5 160 223
Waiting: 134 161 26.5 159 223
Total: 140 165 26.0 163 227
Percentage of the requests served within a certain time (ms)
50% 163
66% 169
75% 175
80% 181
90% 227
95% 227
98% 227
99% 227
100% 227 (longest request)
nginxで動いてます。逆も然りで、apacheもymlを変えれば動きます。


















ディスカッション
コメント一覧
まだ、コメントがありません