メインコンテンツまでスキップ

Docker Hubイメージインストール

ABC User Feedbackは公式Dockerイメージを提供しています。
このドキュメントは、Docker Composeを使用してWeb UI、APIサーバー、データベース、SMTPサーバーなどのシステムをローカルで迅速に構成する方法を説明します。


1. 前提条件

項目説明
Docker20.10以上
Docker Composev2以上推奨
使用ポート3000400013306508025(ローカルで空いている必要がある)

2. Dockerイメージ構成

サービス名説明Dockerイメージ名
Web (Admin UI)フロントエンドWeb UI(Next.js)line/abc-user-feedback-web
API (Backend)バックエンドサーバー(NestJS)line/abc-user-feedback-api
MySQLデータベースmysql:8.0
SMTP4Devローカルテスト用メールサーバーrnwood/smtp4dev:v3
(オプション)OpenSearch検索機能とAI分析精度向上用opensearchproject/opensearch:2.16.0

3. docker-compose.ymlの例

name: abc-user-feedback
services:
web:
image: line/abc-user-feedback-web:latest
environment:
- NEXT_PUBLIC_API_BASE_URL=http://localhost:4000
ports:
- 3000:3000
depends_on:
- api
restart: unless-stopped

api:
image: line/abc-user-feedback-api:latest
environment:
- JWT_SECRET=jwtsecretjwtsecretjwtsecret
- MYSQL_PRIMARY_URL=mysql://userfeedback:userfeedback@mysql:3306/userfeedback
- SMTP_HOST=smtp4dev
- SMTP_PORT=25
- SMTP_SENDER=user@feedback.com
# OpenSearchを使用する場合は以下のコメントを解除してください
# - OPENSEARCH_USE=true
# - OPENSEARCH_NODE=http://opensearch-node:9200
ports:
- 4000:4000
depends_on:
- mysql
restart: unless-stopped

mysql:
image: mysql:8.0
command:
[
'--default-authentication-plugin=mysql_native_password',
'--collation-server=utf8mb4_bin',
]
environment:
MYSQL_ROOT_PASSWORD: userfeedback
MYSQL_DATABASE: userfeedback
MYSQL_USER: userfeedback
MYSQL_PASSWORD: userfeedback
TZ: UTC
ports:
- 13306:3306
volumes:
- mysql:/var/lib/mysql
restart: unless-stopped

smtp4dev:
image: rnwood/smtp4dev:v3
ports:
- 5080:80
- 25:25
- 143:143
volumes:
- smtp4dev:/smtp4dev
restart: unless-stopped

# OpenSearchを使用する場合は以下のコメントを解除してください
# opensearch-node:
# image: opensearchproject/opensearch:2.16.0
# restart: unless-stopped
# environment:
# - cluster.name=opensearch-cluster
# - node.name=opensearch-node
# - discovery.type=single-node
# - bootstrap.memory_lock=true
# - 'OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m'
# - plugins.security.disabled=true
# - OPENSEARCH_INITIAL_ADMIN_PASSWORD=UserFeedback123!@#
# ulimits:
# memlock:
# soft: -1
# hard: -1
# nofile:
# soft: 65536
# hard: 65536
# volumes:
# - opensearch:/usr/share/opensearch/data
# ports:
# - 9200:9200
# - 9600:9600

volumes:
mysql:
smtp4dev:
# opensearch:

4. 実行手順

4.1 Dockerイメージのダウンロードと実行

# Docker Composeですべてのサービスをバックグラウンドで実行
docker compose up -d

4.2 実行状態の確認

# すべてのコンテナが正常に実行中か確認
docker compose ps

4.3 サービスアクセスの確認


5. SMTP設定

デフォルトでは、この構成ではsmtp4devを通じてメールをテストできます。

SMTPテスト方法

  1. Webアプリケーションでユーザー登録またはユーザー招待機能を使用
  2. http://localhost:5080で送信されたメールを確認
  3. メール内容と添付ファイルなどをテスト

重要: 実際の本番環境では、必ず外部SMTPサーバー(例:Gmail、SendGrid、社内SMTPなど)と連携する必要があります。

6. インストール確認

6.1 Webアプリケーションアクセス確認

ブラウザでhttp://localhost:3000にアクセスし、以下を確認してください:

  • テナント作成画面が正常に表示されるか
  • ページの読み込みが完了するか
  • JavaScriptエラーがないか(ブラウザの開発者ツールで確認)

6.2 APIサーバーステータス確認

# APIサーバーヘルスチェック
curl http://localhost:4000/api/health

予想される応答:

{
"status": "ok",
"info": {
"database": {
"status": "up"
}
}
}

6.3 データベース接続確認

# MySQLコンテナに直接アクセスしてデータベースを確認
docker compose exec mysql mysql -u userfeedback -puserfeedback -e "SHOW DATABASES;"

# テーブル作成確認
docker compose exec mysql mysql -u userfeedback -puserfeedback -e "USE userfeedback; SHOW TABLES;"

6.4 ログ確認

# すべてのサービスのログを確認
docker compose logs

# 特定のサービスのログのみ確認
docker compose logs api
docker compose logs web
docker compose logs mysql

7. OpenSearch使用時の注意事項

OpenSearchは、検索機能とAI分析の精度を向上させるオプションコンポーネントです。

7.1 OpenSearch有効化方法

  1. docker-compose.ymlファイルでapiサービスの環境変数のコメントを解除:
- OPENSEARCH_USE=true
- OPENSEARCH_NODE=http://opensearch-node:9200
  1. opensearch-nodeサービスのコメントを解除
  2. volumes:セクションでopensearch:のコメントを解除
  3. ポート92009600がローカルで使用されていないことを確認

7.2 メモリ要件

注意: OpenSearchは最低2GB以上のメモリを必要とします。メモリ不足の場合、コンテナが自動的に終了する可能性があります。

7.3 OpenSearchステータス確認

# OpenSearchクラスターステータス確認
curl http://localhost:9200/_cluster/health

# OpenSearchノード情報確認
curl http://localhost:9200/_nodes

# インデックス確認
curl http://localhost:9200/_cat/indices

7.4 OpenSearch無効化

OpenSearchを使用しない場合は、docker-compose.ymlで該当サービスと環境変数をコメントアウトします。


8. トラブルシューティング

8.1 ポート競合の問題

症状: docker compose up実行時にポートバインディングエラーが発生

解決方法:

# 使用中のポートを確認
lsof -i :3000 # Webポート
lsof -i :4000 # APIポート
lsof -i :13306 # MySQLポート
lsof -i :5080 # SMTPポート

# 該当ポートを使用しているプロセスを停止して再起動
docker compose down
docker compose up -d

8.2 コンテナ起動失敗

症状: 一部のコンテナが起動しない、または継続的に再起動される

解決方法:

# コンテナステータス確認
docker compose ps

# 失敗したコンテナのログを確認
docker compose logs [サービス名]

# すべてのコンテナを停止して削除
docker compose down

# ボリュームも削除(データ損失に注意)
docker compose down -v

# 再度起動
docker compose up -d

8.3 データベース接続エラー

症状: APIサーバーからMySQL接続失敗

解決方法:

# MySQLコンテナが完全に起動するまで待機
docker compose logs mysql

# MySQLコンテナに直接接続テスト
docker compose exec mysql mysql -u userfeedback -puserfeedback -e "SELECT 1;"

# APIサービスを再起動
docker compose restart api

8.4 イメージダウンロード失敗

症状: Dockerイメージをダウンロードできない

解決方法:

# Docker Hubログイン確認
docker login

# イメージを手動でダウンロード
docker pull line/abc-user-feedback-web:latest
docker pull line/abc-user-feedback-api:latest

# ネットワーク接続確認
ping hub.docker.com

8.5 メモリ不足の問題

症状: OpenSearchコンテナが自動的に終了する

解決方法:

# システムメモリ確認
free -h

# Dockerメモリ使用量確認
docker stats

# OpenSearchを無効化(docker-compose.ymlでコメントアウト)
# またはメモリ割り当てを増やす

9. 参考リンク


関連ドキュメント