0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【全6回】知識ゼロからVPSでWebアプリ公開 #2 WordPressを一瞬で構築

Last updated at Posted at 2025-12-08

【全6回】知識ゼロからVPSでWebアプリ公開 #2 WordPressを一瞬で構築

はじめに

本連載は、超初心者が 「Dockerを使って自作Webアプリをサーバー公開する」 までのステップバイステップ講座です。

  • 第1回:Dockerってなに? & Webサーバーを起動せよ

  • 第2回:人気No.1 CMS「WordPress」を構築せよ(今回)

  • 第2.5回:【Docker入門おまけ1】WordPressのCSSを「ローカルファイル編集」で書き換えて、Webの裏側を完全攻略する

  • 第3回:オリジナルアプリ開発① 〜コードを書く〜
  • 第4回:オリジナルアプリ開発② 〜コンテナ化〜
  • 第5回:【実演】VPSへのデプロイ(世界へ公開)
  • 第6回:守りの技術:バックアップとセキュリティ

前回の第1回では、docker run コマンドを使ってWebサーバーを1つ起動しました。
今回は、世界中のWebサイトの40%以上で使われている 「WordPress(ワードプレス)」 を自分のPCで作ってみます。

本来ならプロでも環境構築に1時間はかかる作業ですが、Dockerなら 3分 で終わります。


1. そもそもWordPressはどうやって動く?

WordPressは、単なる「表示する機能」だけでは動きません。記事の文章や設定データを保存しておく 「データベース(MySQLなど)」 が必要です。

  • WordPressくん(アプリ): 画面を表示したり、記事を書く人。
  • MySQLくん(データベース): 記事の内容を記録しておくノート。

この2人は常にペアで動く必要があります。
前回のように docker run を2回打って、それぞれを起動して、手動でつなぎ合わせるのは…正直めちゃくちゃ面倒くさいです。

そこで「Docker Compose」の出番

Dockerには、複数のコンテナをまとめて管理する 「Docker Compose(ドッカー・コンポーズ)」 という機能があります。

  • Docker Run: 「チャーハン一丁!」と一品だけ注文するイメージ。
  • Docker Compose: 「コース料理(前菜・スープ・メイン)」をまとめて注文するレシピ本のようなイメージ。

今回は、この「レシピ本(設定ファイル)」を1つ書くだけで、WordPress環境を一発で作ります。


2. 【演習】WordPress環境を作ろう

ステップ1:作業用フォルダを作る

まず、デスクトップに今回の作業用フォルダを作りましょう。

  1. デスクトップに my-wordpress という名前の新しいフォルダを作成してください。
  2. ターミナル(Mac)またはPowerShell(Windows)を開き、そのフォルダに移動します。
# デスクトップのmy-wordpressフォルダへ移動
cd ~/Desktop/my-wordpress
# Windowsの場合は cd ~\Desktop\my-wordpress

ステップ2:魔法のレシピ「docker-compose.yml」を作成

フォルダの中に、docker-compose.yml (ドッカー・コンポーズ・ヤムル)という名前のファイルを作成してください。
※拡張子が .txt にならないように注意!

そして、以下のコードをそのままコピペして保存してください。

docker-compose.yml
version: '3'

services:
  # 1人目:データベース(記録係)
  db:
    image: mysql:8.0
    platform: linux/amd64
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql

  # 2人目:WordPress(表示係)
  wordpress:
    image: wordpress:latest
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
    depends_on:
      - db

volumes:
  db_data:

解説:レシピの中身

  • services: これから作るコンテナたち(db と wordpress)。
  • environment: パスワードなどの設定。今回は練習用なので簡単なパスワードにしています。
  • ports "8000:80": ブラウザで 8000 番ポートにアクセスするとWordPressが見れるように設定。
  • depends_on: 「db(データベース)が起動してからWordPressを起動してね」という指示。

ステップ3:起動コマンド実行!

準備は整いました。以下のコマンドを実行してください。

docker-compose up -d
  • up: レシピ通りにコンテナを作成・起動せよ。
  • -d: バックグラウンドで実行せよ。

初回は画像のダウンロードが入るため、1〜2分ほどかかります。
Creating ... done と表示されたら完了です!


3. ブラウザで確認しよう

Chromeなどのブラウザを開いて、以下にアクセスしてください。

👉 http://localhost:8000

感動の瞬間

WordPressの言語選択画面(またはセットアップ画面)が表示されましたか?
もし表示されたら、あなたはたった一つのファイルと一つのコマンドで、本格的なCMS環境を構築できたことになります!

  1. 言語で「日本語」を選択して「次へ」。
  2. サイトのタイトルやユーザー名などを適当に入力して「WordPressをインストール」。
  3. ログインして、管理画面を触ってみてください。

完全に普通のWordPressとして動作していますよね?


4. 後片付け(とても重要)

遊び終わったら、きれいに片付けましょう。
Docker Composeを使った場合は、片付けもコマンド一発です。

docker-compose down
  • down: コンテナを停止し、さらに削除まで行います。

Note: データはどうなる?
今回の設定(volumes)のおかげで、コンテナを消しても「記事データ(データベースの中身)」はPC内に保存されています。
もう一度 docker-compose up -d すれば、さっき作った記事が残った状態で復活します。これがDockerの便利なところです!


よくあるトラブル

  • エラー:YAML format error
    • 原因: docker-compose.yml の「インデント(字下げ)」がズレている可能性があります。
    • 対処: 2行目や4行目の開始位置がズレていないか、半角スペースで揃っているか確認してください(タブキーは使わないほうが無難です)。
  • エラー:Port is already allocated
    • 原因: 8000番ポートを他のアプリが使っています。
    • 対処: docker-compose.yml8000:80 の部分を 8081:80 など別の番号に変えて、再度 up してください。

次回予告

既存のツール(WordPress)を使うのはとても簡単でしたね。
次回からは、いよいよ 「自分だけのオリジナルWebアプリ」 を作っていきます。Pythonを使って、世界に一つだけのアプリを開発しましょう!

  • 第3回:オリジナルアプリ開発① 〜コードを書く〜 お楽しみに!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?