##はじめに
この記事はDockerを軽く勉強しただけの駆け出しエンジニアが、
Docker、WordPressの勉強のために環境構築をする過程・反省を記した備忘録です。
よって、詳しい説明や深い考察などはなく、ただこの経験を忘れたくないなと思い記録に残したものです。
業界でいうと未経験者なので、さほど難しい言葉もないと思います。同じく初学者である方々への励みにもなればなと思います。(Docker用語?は登場します。)
ちなみにローカルで勉強用に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のデフォルト画面が表示された!
ここに来るまでにかなりの時間がかかり苦労したため、無事に成功して感動。
エンジニアにとって苦労することが大事と言うけど、本当にその通りで苦労して手に入れた技術とか知識は身体に染み付くと思うし、うまくいった時に感動があるのでますます勉強が好きになるし意欲も高まっていきますね。
※もし間違い等あれば指摘・訂正していただければと思います。
ということで以上です
###終