コンテンツにスキップ

Dockerを利用して開発する

Docker を利用した開発

TutoriaLLM では、Docker compose を使用して、アプリを開発することができます。以下の手順からアプリを開発してみましょう。

リポジトリのクローン

GitHub リポジトリをクローンして、開発を行います。お好みのエディタを使用してコードを編集し、Docker を利用したローカル環境でアプリを利用することができます。

また、アプリの実行には Docker が必要です。Docker をインストールしていない場合は、以下のリンクからインストールしてください。

compose ファイルの作成

以下は開発に利用できるdocker-compose.ymlファイルの例です:

/docker-compose.yml
services:
redis:
#実稼働ではredis/redis-stack-serverを使用する
container_name: code-tutorial-redis-dev
image: redis/redis-stack:latest
ports:
- "6379:6379"
db:
container_name: code-tutorial-db-dev
image: pgvector/pgvector:pg14
ports:
- "5432:5432"
environment:
POSTGRES_USER: $DB_USER
POSTGRES_PASSWORD: $DB_PASSWORD
POSTGRES_DB: $DB_NAME
PGDATA: /var/lib/postgresql/data/pgdata
TZ: UTC
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U ${DB_USER} -d ${DB_NAME}'"]
interval: 5s
timeout: 60s
retries: 5
start_period: 5s
volumes:
- db_data_db:/var/lib/postgresql/data
app:
container_name: code-tutorial-app-dev
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
- "3001:3001"
env_file:
- .env
command: >
sh -c "
if [ ! -f /initialized/.initialized ]; then
pnpm install &&
pnpm run drizzle:generate &&
pnpm run drizzle:push &&
pnpm run reset-credential &&
touch /initialized/.initialized &&
pnpm run dev
else
pnpm install &&
pnpm run drizzle:generate &&
pnpm run drizzle:push &&
pnpm run dev;
fi
"
develop:
watch:
- action: sync
path: ./src
target: /tutorial_app_dev/src
ignore:
- node_modules/
- action: rebuild
path: package.json
depends_on:
db:
condition: service_healthy
volumes:
- ./app_data:/initialized # アプリの初期化を行うためのファイルをマウント
volumes:
db_data_db:

.env ファイルの作成

docker-compose.ymlファイルと同じディレクトリに.envファイルを作成してください。 以下は 開発サーバーで必要な環境変数の例です:

/env.dev.example
AUTH_SECRET="XXXXXXXX"
OPENAI_API_KEY="sk-proj-XXXXXXXXXXXXXXXX"
DB_USER=postgres
DB_PASSWORD=postgres
DB_PORT=5432
DB_NAME="code_tutorial_db"
DB_HOST="db"
REDIS_HOST="redis"
DEFAULT_USER_PASSWORD="admin"
DEFAULT_USER_NAME="admin"

サーバーの起動

サーバーは Docker を利用してホストすることができます。以下のコマンドで開発サーバーを起動します:

Terminal window
docker compose up
# ビルドを行う場合
docker compose up --build
# バックグラウンドで起動する場合
docker compose up -d

HMR の使用

HMR(Hot Module Replacement)を使用したい場合は、以下のコマンドで起動します。ファイルを変更すると自動的にリロードされます。

Terminal window
docker compose watch