nginx+wordpressのdocker環境を構築する
はじめに
localにwordpressが動く環境がすでにあったのですが、メンバーの新規参入時など環境構築が大変だったのでdockerで環境を構築できるようにしました。
dockerはこの本を読んで勉強しました👇
とおもったらもう第二版が出ていた😮
プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化
- 作者:WINGSプロジェクト 阿佐 志保
- 出版社/メーカー: 翔泳社
- 発売日: 2018/04/11
- メディア: 単行本(ソフトカバー)
dockerでwordpress環境をつくるサンプルはたくさんあったのですが、一からwordpressをつくっていくものだったりapache前提だったりとちょっと要件が違う・・・🤔
今回は「既存のnginx+wordpress環境をdockerで構築する」をやっていきます💪
主にこの記事を参考にしました。とてもわかりやすかったです🙏
docker-compose で作る nginx + PHP-FPM7 + HTTP/2 に対応したモダンな WordPress 開発環境 – PSYENCE:MEDIA
ってことでまとめます。
移行の方針
- nginx, wordpressの動く環境をdockerで構築する
- apacheが入っていないイメージを使う
- mysqlはlocalで動いているものをそのまま使う
- のちのち本番をdocker化するにしてもRDSを使うので問題ないはず🤔
ディレクトリ構成
❯ tree . -L 2 . ├── docker-compose.yml ├── nginx │ └── default.conf └── my_wordpress ├── index.php ├── ...
docker-compose.yml
読んだ本ではversion2の書き方でしたが、version3で書いてみました😉
記述がいろいろ省略されてたりしていたけどそんなに大変じゃなかった💪
イメージのバージョンは既存の環境に合わせてるだけなので、最新を使えるなら最新を使ったほうがいいです👌
wordpressのイメージはtagを指定してapacheが入っていないものを使います。
version: '3' services: nginx: image: nginx:1.15.3-alpine restart: always ports: - "8082:80" depends_on: - wordpress volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ./my_wordpress:/var/www/html wordpress: image: wordpress:4.9.8-php5.6-fpm-alpine restart: always volumes: - ./my_wordpress:/var/www/html
nginx.conf
fastcgi_pass
にはdocker-compose.ymlに記述したservice名を指定します。(今回はwordpress
)
server { listen 80; server_name _; root /var/www/html; index index.php; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(\.+)$; fastcgi_pass wordpress:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
いざdockerを起動
$ docker-compose up -d
で起動して、 http://localhost:8082 で既存のwordpressページが表示されればOK👍
おまけ
よく使うコマンド
コンテナを起動する
$ docker-compose up -d
コンテナを停止する
$ docker-compose stop
コンテナを再起動する
$ docker-compose restart
logを見とく
$ docker-compose logs -f
コンテナに入る
$ docker exec -it {container_name} sh
dockerイメージの履歴を見る
$ docker history {image}
今回、wordpressイメージの違いを見るために使いました。
❯ docker history wordpress IMAGE CREATED CREATED BY SIZE COMMENT 41e689eea0cd 3 weeks ago /bin/sh -c #(nop) CMD ["apache2-foreground"] 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B <missing> 3 weeks ago /bin/sh -c #(nop) COPY file:40bd880f26da3ada… 7.62kB <missing> 3 weeks ago /bin/sh -c set -ex; curl -o wordpress.tar.g… 27.3MB <missing> 3 weeks ago /bin/sh -c #(nop) ENV WORDPRESS_SHA1=0945ba… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV WORDPRESS_VERSION=4.9… 0B <missing> 3 weeks ago /bin/sh -c #(nop) VOLUME [/var/www/html] 0B <missing> 3 weeks ago /bin/sh -c a2enmod rewrite expires 60B <missing> 3 weeks ago /bin/sh -c { echo 'opcache.memory_consumpt… 171B <missing> 3 weeks ago /bin/sh -c set -ex; savedAptMark="$(apt-ma… 3.5MB <missing> 5 weeks ago /bin/sh -c #(nop) CMD ["apache2-foreground"] 0B <missing> 5 weeks ago /bin/sh -c #(nop) EXPOSE 80/tcp 0B <missing> 5 weeks ago /bin/sh -c #(nop) WORKDIR /var/www/html 0B <missing> 5 weeks ago /bin/sh -c #(nop) COPY file:24613ecbb1ce6a09… 1.35kB <missing> 5 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["docker-php-e… 0B <missing> 5 weeks ago /bin/sh -c docker-php-ext-enable sodium 20B <missing> 5 weeks ago /bin/sh -c #(nop) COPY multi:c925dfb355ea16b… 6.44kB <missing> 5 weeks ago /bin/sh -c set -eux; savedAptMark="$(apt-m… 56.9MB <missing> 5 weeks ago /bin/sh -c #(nop) COPY file:207c686e3fed4f71… 587B <missing> 5 weeks ago /bin/sh -c set -xe; fetchDeps=' wget ';… 13.4MB <missing> 5 weeks ago /bin/sh -c #(nop) ENV PHP_SHA256=3585c1222e… 0B <missing> 5 weeks ago /bin/sh -c #(nop) ENV PHP_URL=https://secur… 0B <missing> 5 weeks ago /bin/sh -c #(nop) ENV PHP_VERSION=7.2.9 0B <missing> 2 months ago /bin/sh -c #(nop) ENV GPG_KEYS=1729F83938DA… 0B <missing> 2 months ago /bin/sh -c #(nop) ENV PHP_LDFLAGS=-Wl,-O1 -… 0B <missing> 2 months ago /bin/sh -c #(nop) ENV PHP_CPPFLAGS=-fstack-… 0B <missing> 2 months ago /bin/sh -c #(nop) ENV PHP_CFLAGS=-fstack-pr… 0B <missing> 2 months ago /bin/sh -c #(nop) ENV PHP_EXTRA_CONFIGURE_A… 0B <missing> 2 months ago /bin/sh -c #(nop) ENV PHP_EXTRA_BUILD_DEPS=… 0B <missing> 2 months ago /bin/sh -c { echo '<FilesMatch \.php$>'; … 237B <missing> 2 months ago /bin/sh -c set -ex && . "$APACHE_ENVVARS" … 33B <missing> 2 months ago /bin/sh -c a2dismod mpm_event && a2enmod mpm… 68B <missing> 2 months ago /bin/sh -c set -ex && sed -ri 's/^export (… 1.92kB <missing> 2 months ago /bin/sh -c #(nop) ENV APACHE_ENVVARS=/etc/a… 0B <missing> 2 months ago /bin/sh -c #(nop) ENV APACHE_CONFDIR=/etc/a… 0B <missing> 2 months ago /bin/sh -c apt-get update && apt-get instal… 42.3MB <missing> 2 months ago /bin/sh -c mkdir -p $PHP_INI_DIR/conf.d 0B <missing> 2 months ago /bin/sh -c #(nop) ENV PHP_INI_DIR=/usr/loca… 0B <missing> 2 months ago /bin/sh -c apt-get update && apt-get install… 209MB <missing> 2 months ago /bin/sh -c #(nop) ENV PHPIZE_DEPS=autoconf … 0B <missing> 2 months ago /bin/sh -c set -eux; { echo 'Package: php… 46B <missing> 2 months ago /bin/sh -c #(nop) CMD ["bash"] 0B <missing> 2 months ago /bin/sh -c #(nop) ADD file:919939fa022472751… 55.3MB
あー、apache入ってるなー。🧐
❯ docker history wordpress:4.9.8-php5.6-fpm-alpine IMAGE CREATED CREATED BY SIZE COMMENT 7d3fe91e2ab2 3 weeks ago /bin/sh -c #(nop) CMD ["php-fpm"] 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B <missing> 3 weeks ago /bin/sh -c #(nop) COPY file:40bd880f26da3ada… 7.62kB <missing> 3 weeks ago /bin/sh -c set -ex; curl -o wordpress.tar.g… 27.3MB <missing> 3 weeks ago /bin/sh -c #(nop) ENV WORDPRESS_SHA1=0945ba… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV WORDPRESS_VERSION=4.9… 0B <missing> 3 weeks ago /bin/sh -c #(nop) VOLUME [/var/www/html] 0B <missing> 3 weeks ago /bin/sh -c { echo 'opcache.memory_consumpt… 171B <missing> 3 weeks ago /bin/sh -c set -ex; apk add --no-cache --v… 3.52MB <missing> 3 weeks ago /bin/sh -c apk add --no-cache bash sed 1.5MB <missing> 3 weeks ago /bin/sh -c #(nop) CMD ["php-fpm"] 0B <missing> 3 weeks ago /bin/sh -c #(nop) EXPOSE 9000/tcp 0B <missing> 3 weeks ago /bin/sh -c set -ex && cd /usr/local/etc &&… 23.4kB <missing> 3 weeks ago /bin/sh -c #(nop) WORKDIR /var/www/html 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["docker-php-e… 0B <missing> 3 weeks ago /bin/sh -c #(nop) COPY multi:af8a06a5cfc82b1… 6.43kB <missing> 3 weeks ago /bin/sh -c set -xe && apk add --no-cache --… 34.7MB <missing> 3 weeks ago /bin/sh -c #(nop) COPY file:207c686e3fed4f71… 587B <missing> 3 weeks ago /bin/sh -c set -xe; apk add --no-cache --v… 13.8MB <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_SHA256=5000d82610… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_URL=https://secur… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_VERSION=5.6.37 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV GPG_KEYS=0BD78B5F9750… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_LDFLAGS=-Wl,-O1 -… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_CPPFLAGS=-fstack-… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_CFLAGS=-fstack-pr… 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_EXTRA_CONFIGURE_A… 0B <missing> 3 weeks ago /bin/sh -c mkdir -p $PHP_INI_DIR/conf.d 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHP_INI_DIR=/usr/loca… 0B <missing> 3 weeks ago /bin/sh -c set -x && addgroup -g 82 -S www-… 4.85kB <missing> 3 weeks ago /bin/sh -c apk add --no-cache --virtual .per… 2.69MB <missing> 3 weeks ago /bin/sh -c #(nop) ENV PHPIZE_DEPS=autoconf … 0B <missing> 2 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B <missing> 2 months ago /bin/sh -c #(nop) ADD file:25f61d70254b9807a… 4.41MB
こっちはapache入ってない。採用!
以上です🤗