LoginSignup
3
2

Dockerを用いたWordPress環境構築 | 42Tokyo Inception

Last updated at Posted at 2023-12-28

はじめに

42TokyoのLevel5の課題、Inceptionという課題についての記事です。
この課題では、Dockerを用いてWordPressのサイトを立ち上げます。

後半の課題になると記事を書いている人が少なくなってくるので、初めて記事を書いてみることにしました。
何から初めたら良いか分からないという方を対象にしています。
技術的な説明はほぼないですが、在校生やDocker初心者の方への道標になればと思います。

42Tokyoについて

課題に取り組む流れ

1. 課題要件の確認、Dockerについて勉強
2. Dockerfileの記述
3. mariadb,nginx,WordPressの仕様について調査
4. docker-compose.yml, Makefileの記述
5. まとめ

1. 課題要件の確認、Dockerについて勉強

まずはじめに課題要件を確認すると思いますが、最初は何言ってるか分からなくて大丈夫です。
Dockerを使って、サイトを立ち上げる課題ということが分かったらDockerの勉強を初めましょう。

この2つが圧倒的おすすめです!!

イラストが豊富で初心者に優しい。何も分からなくてもとりあえずのイメージが掴めます

図が豊富かつ、基礎からしっかりと解説しているのでおすすめです。しかも無料!!

私はどちらも手を動かさずに読むだけで勉強しましたが、一度もdockerを触れたことがないという方はハンズオン形式なので手を動かしてみると良いと思います!

作業環境について

個人PCで最後まで完成させてからVMで最終調整すると良いと思います。
私は42VMを使用しましたが、設定が面倒くさかったです。

2. Dockerfileの記述

ここから実際に設定を行っていきます。

Alpine/Debian以外のimageを使用することは禁止されているため、Alpine/Debianを入れたcontainerの中にmariadb, nginx, WordPressの環境を作成する感覚です。

まず、ベースイメージとなるAlpine/Debianを入れます。
詳細な設定はともかく、mariadbをinstallして実行する記述だけ書けたら、docker image buildを使用してimageを作成し、docker container runを使用してmariadbコンテナが作られているか確認してみましょう。

mariadbの設定が出来たら何となくやり方が分かってくるので、そこからは順番に作っていきます。
私はmariadb→nginx→wordpressの順番で作成しました。

コンテナごとに、docker-compose.ymlやMakefileも少しずつ書き足していきましょう。

Dockerfile

Dockerfileの記述に当たって気を付けたほうが良い点が何点かあるので、以下のような記事の内容について調べてみると良いと思います。

3. mariadb,nginx,WordPressの仕様について調査

Dockerfileを記述していくにあたって、初めはDockerの勉強をすれば良いのかと思いますがそうではありません。
Dockerfileにはこれらのサービスの設定を書き込むので、コマンドや使用するサービスについて調べる必要があります。

これを調べるのが、非常に楽しくないです。。
最初はqiitaなどのまとめ記事がわかりやすいですが、結局公式ドキュメントを見てました。
以下参考になったサイトです。ここでは解説はしませんが、これらのサイトに出てくる単語などを調べると課題が進むと思います。

mariadb

wordpress

nginx

bonus / adminer

4. docker-compose.yml, Makefileの記述

今回の課題ではdocker-composeやその他の起動、削除など実行に関わるコマンドはMakefileにまとめて記述を行います。
4ステップ目になっていますが、こちらは適宜付け足していくのがおすすめです。

docker-compseについてはたくさん記事があるので特に心配はありません。
何回も長いdockerコマンドを打つのは大変なので、Makefileを駆使して、作業を効率化することがポイントです。

5. まとめ

最後にもう一度課題要件を確認しましょう。何か見落としていることが必ずあります。
またレビューに向けて、今まで勉強したことを整理をしておくと良いと思います。

Tips

  • build が出来ないとき → ターミナルのログをみる
  • upした後 → docker 〇〇 ls系のコマンドで状況を確認する
  • build, upでエラーが出ていないがうまく行かない → docker logs コンテナ名
  • docker logsでエラーを見つけた場合 → container内をdocker exec コンテナ名 -it /bin/bashで確認
  • COPY, No such a file~系のエラー → パス間違い、ディレクトリが存在しないことが大抵
  • ps, lsなど確認するコマンドは頻繁に使用するので、makeルールを作る
  • ENTRYPOINT, CMDの書き方に注意
  • /etc/hosts
  • PID=1問題
  • レビュー時に必要な作業や、くり返し使用する作業などmakeルールを作って効率化する
  • 42VMはnginxが初期設定で動いているためkillすること
  • 42VMはlogin名でuserを作成し、sudo権限を与えておく
  • ubuntu docker install

最後に

インターンや大学で使用していたDockerがどのように機能しているかが分かりとても勉強になりましたが、調べるのがただ大変な部分もあった課題でした。。
初めて記事を書きましたが、アウトプットすることも大事だなと思いました。
最後まで読んでいただきありがとうございました!

作ったもの

本リポジトリの制作物の安全性や課題としての完成度は保証できないのでご了承ください。

その他参考にしたサイト・書籍

私が調べた中では、唯一、42Tokyo内でInceptionについて書かれていたnoteです。大変お世話になりました。

完成後に見つけたのですが、こちらのサイトも詳しく書かれています

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2