結論から言います。SmartSlim Server の Docker デプロイは 4 ステップで完結します。イメージの構築、docker-compose.yml の作成、サービスの起動、ヘルスチェックの確認です。イメージサイズは約 450MB、最も小構成は 2 コア 4GB で動作し、起動から 5 秒以内にヘルスチェックを通過します。本番環境では、ボリュームによる永続化、Nginx リバースプロキシ、ログ収集、定時バックアップの設定が必要です。本記事では完全な docker-compose.yml 設定、環境変数表、デプロイ手順を順に解説します。まずはデプロイアーキテクチャから説明し、本番レベルの構成を段階的に仕上げていきます。
Docker デプロイ後に圧縮 API を呼び出す方法を知りたい方は、先に圧縮 API 活用ガイド:RESTful インターフェース仕様詳解を読むことをおすすめします。
1. Docker デプロイのアーキテクチャ
SmartSlim Server の Docker デプロイは単一コンテナ構成を採用しており、内部で FastAPI アプリケーションを実行し、ボリュームでファイルと設定を永続化し、ポートマッピング以外部にサービスを提供します。本番環境では TLS 終端とロードバランシングを担う Nginx リバースプロキシ層を追加します。
| コンポーネント | 技術 | 役割 | ポート |
|---|---|---|---|
| SmartSlim コンテナ | Python 3.9 + FastAPI | 圧縮サービスの中核 | 8000(内部) |
| Nginx コンテナ | Nginx 1.25 | リバースプロキシ/TLS | 80/443(外部) |
| ボリューム-data | Docker Volume | 圧縮ファイルの保存 | - |
| ボリューム-logs | Docker Volume | ログファイル | - |
| ボリューム-config | Docker Volume | 設定とライセンス | - |
デプロイ前にサーバーが最小要件を満たしていることを確認してください。以下の表は負荷ごとの推奨構成です。
| デプロイ規模 | CPU | メモリ | ディスク | 同時接続数 | 適用シーン |
|---|---|---|---|---|---|
| 最も小構成 | 2 コア | 4GB | 20GB | 4 | テスト/小規模チーム |
| 推奨構成 | 4 コア | 8GB | 50GB | 8 | 中規模企業 |
| 高負荷構成 | 8 コア | 16GB | 100GB | 16 | 大規模企業 |
| クラスタ構成 | 4 コア × 3 ノード | 8GB × 3 | 共あるストレージ | 24 以上 | 高可用性の本番環境 |
2. docker-compose.yml 設定の詳細
以下は本番環境向け docker-compose.yml の主に設定で、SmartSlim サービス、Nginx リバースプロキシ、ボリューム、ネットワークを含みます。
| 設定項目 | 説明 | 設定例 |
|---|---|---|
| image | イメージ名 | uglypear/smartslim-server:latest |
| restart | 再起動ポリシー | always(本番環境) |
| ports | ポートマッピング | 8000:8000 |
| volumes | ボリュームマウント | ./data:/app/data |
| environment | 環境変数 | SMARTSLIM_LICENSE=xxx |
| healthcheck | ヘルスチェック | curl -f http://localhost:8000/health |
| depends_on | 依存サービス | nginx |
| deploy.resources | リソース制限 | cpus:4, memory:8G |
3. 環境変数一覧
SmartSlim Server は環境変数で実行時パラメータを設定します。設定可能性な項目は以下の表にまとめます。
| 環境変数 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|
| SMARTSLIM_LICENSE | はい | - | ライセンスキー |
| SMARTSLIM_HOST | いいえ | 0.0.0.0 | リッスンアドレス |
| SMARTSLIM_PORT | いいえ | 8000 | リッスンポート |
| SMARTSLIM_WORKERS | いいえ | 4 | ワーカープロセス数 |
| SMARTSLIM_MAX_FILE_SIZE | いいえ | 1073741824 | 単一ファイル上限(1GB) |
| SMARTSLIM_SECURITY_LEVEL | いいえ | MEDIUM | セキュリティレベル |
| SMARTSLIM_RATE_LIMIT | いいえ | 60 | 分間リクエスト上限 |
| SMARTSLIM_LOG_LEVEL | いいえ | INFO | ログレベル |
| SMARTSLIM_TEMP_DIR | いいえ | /app/data/tmp | 一時ファイルディレクトリ |
4. デプロイ手順の詳細
Docker デプロイは構築、起動、検証、監視の 4 フェーズに分かれます。各ステップの操作確認方法は以下の表の通りです。
| ステップ | 操作 | コマンド | 確認方法 |
|---|---|---|---|
| 1. イメージ構築 | SmartSlim イメージを構築 | docker build -t smartslim-server . | docker images でイメージを確認 |
| 2. 設定作成 | docker-compose.yml を作成 | yml ファイルを編集 | docker-compose config で検証 |
| 3. サービス起動 | 全コンテナを起動 | docker-compose up -d | docker-compose ps でステータスを確認 |
| 4. ヘルスチェック | サービスの可用性を確認 | curl http://localhost:8000/health | {"status":"ok"} が返る |
| 5. Nginx 設定 | リバースプロキシを構成 | nginx.conf を編集 | curl https://ドメイン/health |
| 6. 監視設定 | ログと監視を構成 | ログ収集を設定 | docker logs でログを確認 |
5. 本番環境ベストプラクティス
本番環境へのデプロイでは、ヘルスチェック、ログ収集、データバックアップ、セキュリティ強化の 4 点に注目する必要があります。ベストプラクティスは以下の表にまとめます。
| プラクティス項目 | 推奨設定 | 確認頻度 | ツール |
|---|---|---|---|
| ヘルスチェック | interval:30s, timeout:10s, retries:3 | リアルタイム | Docker healthcheck |
| ログ収集 | json-file ドライバ, max-size:100m, max-file:5 | リアルタイム | Docker logging |
| データバックアップ | data ボリュームを毎日別ストレージにバックアップ | 毎日 | cron + docker run |
| セキュリティ強化 | 非 root ユーザーで実行、読み取り専用ファイルシステム | デプロイ時 | Docker security |
| リソース制限 | cpus:4, memory:8G、アラート閾値 80% | リアルタイム | Docker stats |
| イメージ更新 | 定期的に最も新イメージを取得しローリングアップデート | 毎月 | docker-compose pull |
完全なヘルスチェック設定例は次のとおりです。healthcheck で interval を 30 秒(30 秒ごとに確認)、timeout を 10 秒(タイムアウトしたら失敗と判定)、retries を 3 回(3 回連続で失敗したら unhealthy とマーク)、start_period を 10 秒(起動から 10 秒後にチェック開始)に設定します。これでコンテナの異常は 90 秒以内に検知され、自動的に再起動されます。
| 監視指標 | 正常範囲 | アラート閾値 | 確認コマンド |
|---|---|---|---|
| CPU 使用率 | 0%–60% | >80% | docker stats |
| メモリ使用率 | 0%–70% | >85% | docker stats |
| ディスク使用率 | 0%–70% | >85% | df -h |
| API 応答時間 | 0–2 秒 | >5 秒 | curl -w パラメータ |
| 圧縮キュー長 | 0–20 | >50 | API status エンドポイント |
| エラー率 | 0%–0.1% | >1% | ログ統計 |
圧縮タスクキューューの内部設計を知りたい方は、圧縮タスクキューューの設計を参照してください。サーバーデプロイではなくローカルで SDK を組み込みたい場合は、圧縮 SDK 連携ガイドもご覧ください。
6. よくある質問 FAQ
Q1:Docker での圧縮サービスデプロイに必要な構成は?
SmartSlim Server を Docker でデプロイする場合の最も小構成は、2 コア CPU、4GB メモリ、20GB ディスクです。推奨は 4 コア CPU、8GB メモリ、50GB ディスク。OS には Docker 20.10+ と Docker Compose 2.0+ が必要です。x86_64 と ARM64 に対応し、イメージサイズは約 450MB。本番環境では一時的な圧縮ファイルを置くため、別途ディスク領域を確保しておくことをおすすめします。
Q2:Docker デプロイした圧縮サービスのアップデート方法は?
アップデート手順は 3 ステップです。1. docker-compose pull で最も新イメージを取得。2. docker-compose up -d でコンテナを再起動(ボリュームのデータは保持されます)。3. ヘルスチェックエンドポイントで稼働状況を確認。アップデート前にデータボリュームをバックアップしておくと安心です(docker run --volumes-from)。Kubernetes 環境ではローリングアップデートにより無停止で更新できます。バージョン間の互換性は良好ですが、メジャーバージョンアップの前には changelog を確認してください。
Q3:Docker 圧縮サービスのデータ永続化はどう実現しますか?
Docker ボリュームを使って永続化を行います。マウントが必要な 3 つのディレクトリは、/app/data(圧縮ファイルの保存)、/app/logs(ログファイル)、/app/config(設定ファイルとライセンスキー)です。docker-compose.yml の volumes フィールドでホストとコンテナの対応関係を宣言します。コンテナを削除してもボリュームは残るためデータは保護されます。本番環境ではバックアップや拡張のしやすさを考慮し、独立したディスクや NAS にボリュームをマウントすることをおすすめします。
Q4:Docker 圧縮サービスは高可用デプロイに対応していますか?
SmartSlim サーバー版は単一マシンでの Docker デプロイに対応し、ネットワーク版では Docker Compose による複数サービス構成と Kubernetes による高可用デプロイをサポートします。Kubernetes 環境では HPA(Horizontal Pod Autoscaler)で 3〜10 レプリカまで自動スケールし、共あるストレージ(MinIO)や共あるデータベース(MySQL)と組み合わせることで状態レス化を実現できます。単一マシン版でも Nginx によるロードバランシングと複数インスタンスで簡易な高可用構成は可能性ですが、本番環境ではネットワーク版の K8s ソリューションョンを推奨します。
まとめ
SmartSlim Server の Docker デプロイは 4 ステップで完します。イメージの構築、docker-compose.yml の作成、サービスの起動、ヘルスチェックの確認です。イメージは 450MB、最も小 2 コア 4GB で動作し、5 秒でヘルスチェックを通過します。9 項目の環境変数でライセンス、同時実行、セキュリティ、流量制限といった主にパラメータをカバー。本番環境向けの 6 つのベストプラクティスは、30 秒間隔のヘルスチェック、100MB のログローテーション、毎日のデータバックアップ、root 権限を避けたセキュリティ強化、4 コア 8GB のリソース制限、月次のイメージアップデートです。
3 つのポイントを覚えておいてください。1 つ目は、ボリュームに 3 ディレクトリ(data/logs/config)を必ずマウントし、コンテナを削除してもデータを失わないようにすること。2 つ目は、ヘルスチェックを interval:30s + retries:3 で設定し、90 秒以内に異常を検知して自動再起動できるようにすること。3 つ目は、本番環境では Nginx リバースプロキシで TLS 終端を行い、8000 番ポートを直接露出させないことです。デプロイ完後は、圧縮 API とタスクキューを組み合わ使えば、圧縮サービスとしてすぐに使い始められます。
関連記事
ファイルの圧縮でお困りですか?SmartSlim をお試しください
自社開発の Rust 圧縮エンジンを基盤に、PDF/画像/動画/Office/OFD など 10 大カテゴリ 40 以上の形式に対応。ローカル処理のためデータは外部に送信されません。