はじめに
この記事はDockerを軽く勉強しただけの駆け出しエンジニアが、
Docker、WordPressの勉強のために環境構築をする過程・反省を記した備忘録です。
ちなみにローカルで勉強用にWordPressを使うだけなら環境構築は Local by Flywheel と検索するとやり方が出てくると思いますが、ソフトウェアをインストールして軽く設定をしてもらうだけですぐにできます。
あくまで私はDockerの勉強も兼ねてやってみようと思った次第です。
経緯
新たにWordPressを学び始めるにあたって、Dockerも絶賛勉強中だったため
せっかくならと得た知識をアウトプットする意味でも環境構築をDockerでやってみようと考えました。
ちなみに、何をもとにDockerを学んでいるかというと、
Udemyの「ゼロからはじめる Dockerによるアプリケーション実行環境構築」というコースです。これを現在40%ほど終わらせたところです。
一応リンクも貼っておきます。
まずは自力で頑張ってみる(失敗例)
まずは作業用のディレクトリを作る(名前はなんでもよい)
$ mkdir WordPress/WordPress-lecture
次に、nginxでサーバーを立ち上げるレッスンで使った、バインドマウントを設定してWordPressイメージのコンテナを立ち上げるコードを実行しようとした(macの場合のコード)
WordPress-lecture $ docker run --name wordpress-lecture:ver1 \
-v /Users/(PCのユーザー名)/WordPress/WordPress-lecture:/usr/share/wordpress/html:ro -d -p 8081:80 wordpress
Dockerコンテナのタグの指定はここではできないためエラー。:ver1
の部分を消して再度実行
するとエラーは起きずコンテナは立ち上がったが肝心のサーバーがないため、もちろんブラウザで localhost:8081 にアクセスしてもページは表示されず…
コンテナにnginxのイメージを追加すればいいのか?それともnginxのサーバーを立ち上げてそこにWordPressのイメージを追加したほうがいいのか?Apacheじゃなきゃダメなのか?と考えて参考になるものがないかネットを漁ってみたが、学んだことをもう一度調べ直すのにもここまでそれなりの時間を要していたため、早くWordPressの勉強に取り掛かりたかったので…
完成されたコードを使いWordPressの環境を整える
Qiitaで探すと何人かの方々が既に試していらっしゃったのでそのコードを拝借することに
参考にさせていただいた記事
① https://qiita.com/qpSHiNqp/items/48815ed90bd474064708
② https://qiita.com/t20190127/items/3abb7c17acdc8543c8ad
③ https://qiita.com/engineer_ikuzou/items/07ff7bd7c9eabf0b3d6b
・①の記事のdocker-compose.ymlの内容を丸パクリさせてもらい、自身のWordPress-lectureディレクトリ内にdocker-compose.ymlファイルを作成
・自身の現在のディレクトリをコンテナにバインドマウントするための記述 -.:/app
をvolumes欄に追加
・ポート番号8080は別のレッスンで使用していたので8081に変更
最終的なファイルの内容がこちら
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8081:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- .:/app
- wordpress:/var/www/html
- ./wp-content/themes:/var/www/html/wp-content/themes
- ./wp-content/plugins:/var/www/html/wp-content/plugins
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
docker-compose.ymlファイルを置いているWordPress-lectureディレクトリからコマンドを実行
WordPress-lecture $ docker-compose up -d
(-dオプションはバックグラウンドで処理を実行させるためのもの)
doneの文字が表示され無事に成功
localhost:8081にアクセスするとWordPressのデフォルト画面が表示された!
以上