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?

htmxを使ってみた-(2)準備-

Last updated at Posted at 2024-10-22

htmx のダウンロード

htmx は、UNPGKの htmx.org (2024/10/01確認)からダウンロードします。
プルダウンメニューでバージョンを選択できます。
ダウンロードしたファイルには、バージョン番号を付けておくと便利です。
練習プログラムには、ダウンロードしたものを付けています。

プログラムのダウンロード

今回、練習として作ってみたプログラムをGitHubに置きます。

dockerで動きますので、ダウンロードして、実行してみてください。
フロントエンドには htmx 、バックエンドには FastAPIを使います。

注意
ひな形っぽいプログラムですが、セキュリティーやエラーについてほとんど考慮していません。
あくまでも、htmxとFastAPIの使い方の参考にしてください。

ディレクトリの構成について

ダウンロードしたファイルの構成は次のとおりです。

.
├─fastapi/
│ └─app/             #FastAPIを利用したプログラム。ホストとコンテナで共有している
│   └─prog/         #Pythonのコード
│      ├─static/     #CSS , JavaScriptファイル
│      └─templates/  #Jinja2のテンプレート
├─mariadb
│ └initdb.d          #データベースを初期化するスクリプト
└─phpmyadmin

データについて

架空のデータを用意しても良かったのですが、オープンデータとして公開されているものを利用しました。
公開してくださった方に感謝します。
(高山市のデータの利用に他意はありません)

Dockerを使ってサーバーを立ち上げる

dockerのインストール方法、使い方は、解説してあるホームページや書籍を参考にしてください。
今回使うcompose.yml です。
FastAPI , mariadb , phpmyadmin をひとまとめにしました。

compose.yml
version: '3'

services:
  fastapi:
    build:
      context: "./fastapi"
      dockerfile: "Dockerfile"
    container_name: practice_fastapi
    restart: always
    depends_on:
      - mariadb
    ports:
      - 8001:8000
    volumes:
      - ./fastapi/app:/app
    environment:
      - TZ=Asia/Tokyo
      - ENVIRON
    logging:
      driver: json-file
      options:
        max-file: "1"
        max-size: 10m

  mariadb:
    build:
      context: ./mariadb
      dockerfile: Dockerfile
    container_name: practice_mariadb
    restart: always
    volumes:
    #    ports:
    #      - 13306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=practice
      - MYSQL_USER=practice
      - MYSQL_PASSWORD=practice
      - TZ=Asia/Tokyo
    logging:
      driver: json-file
      options:
        max-file: "1"
        max-size: 10m

  phpmyadmin:
    build:
      context: ./phpmyadmin
      dockerfile: Dockerfile
    container_name: practice_phpmyadmin
    restart: always
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mariadb
      - PMA_USER=root
      - PMA_PASSWORD=root
      - TZ=Asia/Tokyo
    depends_on:
      - mariadb
    ports:
      - 4001:80
    logging:
      driver: json-file
      options:
        max-file: "1"
        max-size: 10m

サーバーに phpmyadmin は不要ですが、あると便利なので一緒に入れておきます。
Dockerはファイル一つで開発・実行環境を作ることができるので大変便利です。
サーバーの起動は、

docker compose build
docker compose up -d

です。
depends_on: mariadb としているにもかかわらず、FastAPIがmariadbに接続できないことがあります。
health check などを行ってみたのですが、うまくいきませんでした。
この場合は、

docker compose stop
docker compose start

として、再起動すると動きます。

http://localhost:8001/

にアクセスしてください。
01.png
のような画面が開きます。
(Qiitaの推奨画像サイズは、横幅800pxですので、データの一部のみの表示となっています)

Swagger UIは、

http://localhost:8001/docs

です。
02.png
のような画面が開きます。(横幅800pxは狭いので、ブラウザは広げてみてください)

ReDoc 形式は、

http://localhost:8001/redoc

です。

関連記事一覧

htmxを使ってみた-(1)htmxの基本-
htmxを使ってみた-(2)準備-
htmxを使ってみた-(3)ルート関数-
htmxを使ってみた-(4)htmxを使う-
htmxを使ってみた-(5)HTMLのdialog-
htmxを使ってみた-(6)データの表示-
htmxを使ってみた-(7)データ追加-
htmxを使ってみた-(8)要素の変更-
htmxを使ってみた-(9)ページの再読み込み-
htmxを使ってみた-(10)データの変更-
htmxを使ってみた-(11)データベースの排他制御-
htmxを使ってみた-(12)確認ダイアローグ-
htmxを使ってみた-(13)データ削除-(最終)

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?