odoo-docker-deployment について
Odooのセルフホスト環境向けに、Docker ComposeとOdooの設定を生成し、コンテナやデータベース接続の問題を診断するスキルです。開発・本番構成を扱いますが、環境ごとの検証が必要です。
主な機能
- 01Docker ComposeとOdoo設定の生成
- 02PostgreSQLと永続ストレージの設定
- 03環境変数とシークレットの扱いに関する助言
- 04コンテナとデータベース接続の問題診断
- 05開発・本番デプロイへの対応
活用シーン
- 01DockerでのローカルOdoo開発環境の構築
- 02VPSやクラウドサーバーへのOdooデプロイ
- 03コンテナ起動やデータベース接続障害の調査
- 04既存環境へのSSLリバースプロキシ追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill odoo-docker-deploymentインストール後、Claude Code で/odoo-docker-deploymentを入力して読み込まれたか確認します。
詳細
Odoo の Docker デプロイ
概要
このスキルでは、Odoo 向けに環境ごとの検証が必要な Docker 設定の出発点を提供します。PostgreSQL、永続ファイルストレージ、環境変数の設定、オプションの SSL 対応 Nginx リバースプロキシを含みます。開発用と本番用の両方の設定を扱います。
このスキルを使用する場面
- Docker でローカルの Odoo 開発環境を立ち上げる場合。
- Odoo を VPS またはクラウドサーバー(AWS、DigitalOcean など)にデプロイする場合。
- Odoo コンテナの起動失敗やデータベース接続エラーをトラブルシューティングする場合。
- 既存の Odoo Docker 環境に SSL 対応リバースプロキシを追加する場合。
動作の仕組み
- 有効化:
@odoo-docker-deploymentに言及し、デプロイのシナリオを説明します。 - 生成:すぐに実行できる完全な
docker-compose.ymlとodoo.confを受け取ります。 - デバッグ:コンテナのエラーを説明すると、原因の診断と修正方法が提示されます。
例
例 1:本番用 docker-compose.yml
# Note: The top-level 'version' key is deprecated in Docker Compose v2+
# and can be safely omitted. Remove it to avoid warnings.
services:
db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: odoo
POSTGRES_USER: odoo
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U odoo -d odoo"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- odoo-net
odoo:
image: odoo:17.0
restart: always
depends_on:
db:
condition: service_healthy
ports:
- "127.0.0.1:8069:8069"
- "127.0.0.1:8072:8072" # Longpolling for live chat / bus
environment:
HOST: db
USER: odoo
PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- odoo-web-data:/var/lib/odoo
- ./addons:/mnt/extra-addons # Custom modules
- ./odoo.conf:/etc/odoo/odoo.conf
networks:
- odoo-net
volumes:
postgres-data:
odoo-web-data:
networks:
odoo-net:
例 2:odoo.conf
[options]
admin_passwd = REPLACE_WITH_PRIVATELY_RENDERED_VALUE
db_host = db
db_port = 5432
db_user = odoo
; Official container entrypoint receives database password through PASSWORD.
; Plain odoo.conf does not expand Compose-style environment placeholders.
; addons_path inside the official Odoo Docker image (Debian-based)
addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons
; Use container stdout/stderr unless a writable private log volume is configured.
log_level = warn
; Illustrative worker count; size HTTP+cron+PostgreSQL+OS within measured RAM:
workers = 4
max_cron_threads = 2
limit_memory_soft = 1610612736 ; 1.5 GB — soft kill threshold
limit_memory_hard = 2147483648 ; 2.0 GB — hard kill threshold
limit_time_cpu = 600
limit_time_real = 1200
limit_request = 8192
例 3:一般的なコマンド
# Start all services in background
docker compose up -d
# Stream Odoo logs in real time
docker compose logs -f odoo
# Restart Odoo only (not DB — avoids data risk)
docker compose restart odoo
# Stop all services
docker compose down
# Backup the database to a local SQL dump
docker compose exec db pg_dump -U odoo odoo > backup_$(date +%Y%m%d).sql
# Module updates change schema/data: stop normal Odoo workers first and back up DB+filestore.
# Run a single maintenance instance with the same reviewed DB/config; verify then restart.
Compose は Compose ファイル内の ${VAR} を展開しますが、マウントされた任意のアプリケーション設定ファイル内では展開しません。承認済みの非公開シークレット管理手段を通じて必要な設定を生成し、シークレットを表示せずに検証してください。SQL ダンプだけでは Odoo の filestore が含まれません。一貫性のある DB と filestore のバックアップを調整し、ステージング環境で復元を実証してください。これらの例には、TLS/プロキシ/データベース選択の堅牢化や本番環境への対応確認テストは含まれていません。
ベストプラクティス
- ✅ 推奨: すべてのシークレットを
.envファイルに保存し、${VAR}で参照してください。docker-compose.ymlにパスワードを直接記述しないでください。 - ✅ 推奨: PostgreSQL のヘルスチェックと
depends_on: condition: service_healthyを使用し、DB の準備が整う前に Odoo が起動するのを防いでください。 - ✅ 推奨: SSL 終端には Odoo の前段に Nginx を配置してください(Let's Encrypt/Certbot)。Odoo をポート 80/443 で直接公開しないでください。
- ✅ 推奨: ワーカーのメモリ使用量と同時実行数を測定してください。CPU のヒューリスティックだけでは、安全な RAM 予算を保証できません。
- ❌ 禁止: ポート 5432(PostgreSQL)をパブリックインターネットに公開しないでください。内部の Docker ネットワーク内にのみ配置してください。
- ❌ 禁止: 本番環境で
latestまたは17の Docker イメージタグを使用しないでください。レビュー済みのイメージダイジェストを固定してください。odoo:17.0は変更可能なシリーズタグであり、不変のパッチ識別子ではありません。 - ❌ 禁止:
odoo.confをマウントし、CI/CD でシークレットの保存先として使用しないでください。代わりに Docker シークレットまたは環境変数を使用してください。
制限事項
- このスキルが扱うのはセルフホスト型の Docker デプロイです。Odoo.sh(クラウド管理型ホスティング)は、デプロイモデルがまったく異なります。
- 水平スケーリング(ロードバランサーの背後に複数の Odoo コンテナを配置すること)には、ここでは扱わない共有 filestore(NFS または S3 互換ストレージ)が必要です。
- Nginx 設定テンプレートは含まれていません。完全なリバースプロキシ設定については、Odoo 公式 Nginx ドキュメントを参照してください。
- Docker イメージ内の
addons_pathは、新しいベースイメージのバージョンで変更される場合があります。Odoo イメージをアップグレードした後は、必ず確認してください。
コメント
Markdown 対応