【AdonisJS】Docker環境を構築してCRUD処理を実装した

December 01, 2024
AdonisJS / Docker

以前の記事で、AdonisJSの環境構築とController作成するところまでやってみたので、

今回は「Docker環境構築」「Migration」「Seeding」「Validation」「CRUD処理」あたりを作ってみました。

DBはMySQLでORMは「Lucid」を使いました。

AdonisJS

https://adonisjs.com/

Lucid

https://lucid.adonisjs.com/docs/introduction

今回作った github repo

https://github.com/chanfuku/adonis-api-sample

set up

git clone git@github.com:chanfuku/adonis-api-sample.git
cd adonis-api-sample
cp .env.example .env
docker compose up -d
docker compose exec app yarn install
docker compose exec app yarn dev

run migration

docker compose exec app node ace migration:run

if you need to rollback migration, run

docker compose exec app node ace migration:rollback

seeds

docker compose exec app node ace db:seed

fetch all

curl http://localhost:3333/users

find a user by id

curl http://localhost:3333/users/1

create user

curl -X POST http://localhost:3333/users \
     -H "Content-Type: application/json" \
     -d '{"firstName":"テスト名","lastName":"テスト姓"}'

update user

curl -X PATCH http://localhost:3333/users/3 \
     -H "Content-Type: application/json" \
     -d '{"firstName":"テスト名_更新","lastName":"テスト姓_更新"}'

delete a user

curl -X DELETE http://localhost:3333/users/3

感想

.envのHOSTが127.0.0.1のままだと、Dockerで構築したAPIに外部からアクセス出来ないのでHOST=0.0.0.0(どこからでもアクセス可)に修正する必要があるところが少しハマりポイントかもしれませんが、

そこ以外はAdonisJSやLucidのdocument通りに進めて特にハマるポイントはなかったです。

Lucidに関しては、TypeORMとPrismaは使ったことがあるのですが、特に大きな違いは感じなかったです。

AdonisJSはTypescript, ORM, Testing Tool等のアプリケーション構築に必要不可欠なライブラリ郡がデフォルトで組み込まれているので、

環境構築で苦労することなくコーディングに専念出来る点がが一番の魅力なのだと感じました。

ちなみに、ORMはLucidではなくPrismaやTypeORMを選択することも可能らしいです。

次はもともと気になっていたinertijs(Build single-page apps, without building an API.(API構築が不要なSPA))のアプリケーションを作ってみたいと思います。


Profile picture

React, Vue, TypeScript, Node.js, PHP, Laravel, AWS, Firebase, Docker, GitHub Actions, etc...