コンテンツにスキップ

クイックスタート

Docker の利用

TutoriaLLM では、Docker compose を使用して、アプリを開発したり、ホストしたりすることができます。 TutoriaLLM の基本的な部分は Docker イメージとして提供されており、Docker compose などを使用してデータベースと接続した上で、サーバーにデプロイすることができます。以下の手順に従ってアプリをサーバーにデプロイしてください。

デプロイ先のサーバーの準備

Docker がインストールされているサーバーや、パソコンを準備してください。

イメージの取得

イメージは、Docker Hub にて利用可能です。さまざまなバージョンが提供されていますが、Latest(最新版)の利用をお勧めします。 イメージを利用するには、PostgreSQL,Redis と接続する必要があります。

compose ファイルの作成

以下は実稼働で利用できるdocker-compose.ymlファイルの例です:

./docker-compose.yml
version: "3.8"
services:
reverse-proxy:
image: traefik:v3.1
command:
- --api.insecure=true
- --accesslog=true
- --accesslog.addinternals
- --metrics.addinternals
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.myresolver.acme.httpchallenge=true
- --certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web
- --certificatesresolvers.myresolver.acme.email=$EMAIL
- --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /letsencrypt:/letsencrypt
depends_on:
- app
redis:
container_name: code-tutorial-redis-prod
image: redis/redis-stack-server:latest
ports:
- "6379:6379"
restart: always
db:
container_name: code-tutorial-db-prod
image: postgres:14
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: 10s
timeout: 60s
retries: 5
start_period: 10s
volumes:
- db_data_db:/var/lib/postgresql/data
restart: always
app:
container_name: code-tutorial-app-prod
image: soumame/tutoriallm:latest # Docker Hubのイメージを指定
labels:
- "traefik.enable=true"
- "traefik.http.routers.code-tutorial-app-prod-http.rule=Host(`$DOMAIN`)"
- "traefik.http.routers.code-tutorial-app-prod-http.entrypoints=web"
- "traefik.http.routers.code-tutorial-app-prod-https.rule=Host(`$DOMAIN`)"
- "traefik.http.routers.code-tutorial-app-prod-https.entrypoints=websecure"
- "traefik.http.routers.code-tutorial-app-prod-https.tls.certresolver=myresolver"
restart: always
env_file:
- .env
depends_on:
db:
condition: service_healthy
volumes:
- /etc/letsencrypt:/etc/letsencrypt
- ./app_data:/app_data
watchtower:
container_name: watchtower
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true # 古いイメージを自動的に削除
- WATCHTOWER_POLL_INTERVAL=300 # 5分間隔でチェック(必要に応じて変更可能)
volumes:
db_data_db:
letsencrypt:

環境変数の設定

サーバーでホストして稼働させる場合は以下のコマンドで実稼働アプリをビルドし、起動させます。アプリを稼働させるには以下の環境変数が必要です:

  • AUTH_SECRET - 認証設定で使用するシークレット

  • OPENAI_API_KEY - GPT を使用するためのキー

  • DB_USER - データベースのユーザー名

  • DB_PASSWORD - データベースのパスワード

  • DB_PORT - データベースのポート番号

  • DB_HOST - データベースのホスト名。

  • DB_NAME - データベースの名前。

  • REDIS_HOST - Redis のホスト名

  • DEFAULT_USER_NAME - デフォルトのユーザー名。

  • DEFAULT_USER_PASSWORD - デフォルトのユーザーパスワード。

  • SENTRY_DSN - 任意で Sentry.io の DSN を設定します。バックエンドのエラーを追跡するために使用します。

  • DOMAIN - アプリのドメイン名。自動 SSL 設定に利用します

  • EMAIL - アプリのメールアドレス。自動 SSL 設定に利用します

アプリの起動

Compose ファイルと.env ファイルがあるディレクトリ内で、ターミナルで以下のコマンドを実行してアプリを起動します。

Terminal window
docker compose up
## バックグラウンドで起動する場合
docker compose up -d