FastAPI開発環境
WordPressで高度な処理を行いたい場合には、外部サーバを活用して、外部でPythonなどを使って処理した結果をWordPressで表示することが可能です。
Pythonの場合、FastAPIを使うことで、簡単にそのような機能を実装できます。
実際に開発する上では、github codespacesなどを使ってFastAPI環境を構築することもできますが、今回は、Dockerで全体の環境を作ってみたいと思います。
github codespacesやRenderを使う方法は以下の記事で紹介しています。
すでにDockerでWordPress環境は作成している前提で進めていきます。
詳しくは以下で確認してください。
WordPress環境にFastAPIを追加して開発できるようにするために、docker-compose.ymlファイルにFastAPIのサービスを追加します。
FastAPIサービスの追加
docker-compose.ymlにFastAPIのサービスを追加します。FastAPI用のPython環境を構築し、アプリケーションコードを配置するために新しいディレクトリを作成し、そこにDockerfileを配置します。
Dockerfile(FastAPI用)
新しいディレクトリ(例: fastapi)を作成し、その中に以下のDockerfileを作成します。
# fastapi/Dockerfile
FROM python:3.12
WORKDIR /app
# 必要なPythonパッケージをインストール
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# FastAPIアプリケーションコードをコピー
COPY . .
# FastAPIサーバーを起動
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
requirements.txt
同じディレクトリ(fastapi)にrequirements.txtファイルを作成し、FastAPIとUvicornをインストールするための要件を追加します。
fastapi
uvicorn
FastAPIアプリケーションファイル
FastAPIアプリケーションファイル(例: main.py)を作成し、以下のように記述します。
# fastapi/main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}
docker-compose.yml の更新
docker-compose.ymlファイルにFastAPIのサービスを追加します。
version: "3.9"
services:
  db:
    image: mariadb:10.4
    container_name: "wordpress-db"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
      - db_data:/var/lib/mysql  # 名前付きボリュームを使用してDBデータを永続化
  wordpress:
    build:
      context: .  # Dockerfileがあるディレクトリ
      dockerfile: Dockerfile  
    container_name: "wordpress-wp"
    ports:
      - "8060:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html  # 名前付きボリュームを使用してWordPressデータを永続化
    depends_on:
      - db
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: "phpmyadmin"
    ports:
      - "8070:80"
    environment:
      PMA_HOST: db:3306
      MYSQL_ROOT_PASSWORD: root  # rootパスワードを正しく設定
    depends_on:
      - db
  fastapi:
    build:
      context: ./fastapi  # FastAPIのDockerfileがあるディレクトリ
      dockerfile: Dockerfile
    container_name: "fastapi-app"
    ports:
      - "8000:8000"  # FastAPIのポートを公開
    volumes:
      - ./fastapi:/app  # FastAPIのコードをマウント
    depends_on:
      - db
volumes:
  db_data:  # 名前付きボリュームを定義
    driver: local
  wp_data:  # 名前付きボリュームを定義
    driver: local
Docker Composeの実行
- FastAPIのサービスを追加したら、docker-composeを再起動して新しいサービスを構築します。
docker-compose up --build
- docker-compose upコマンドで全てのサービス(WordPress, MariaDB, phpMyAdmin, FastAPI)が起動するのを確認します。
動作確認
- WordPress: http://localhost:8060でWordPressサイトが表示されることを確認します。
- phpMyAdmin: http://localhost:8070でphpMyAdminが表示されることを確認します。
- FastAPI: http://localhost:8000でFastAPIのエンドポイントが表示されることを確認します。
追加の注意点
- ファイル構造: FastAPI関連のファイル(Dockerfile,requirements.txt,main.py)をfastapiディレクトリに配置します。
- 依存関係の設定: depends_onを使用して、サービスの起動順序を制御しています。MariaDBとWordPressが先に起動されるように設定されています。

 
  
  
  
  


