Docker: 本番プラットフォーム

このドキュメントはNode.jsガイドの一部です。完全なガイドはこちらからご覧いただけます:Dockerを使用してNode.jsアプリを利用・デプロイする方法

👋 Stackheroのドキュメントへようこそ!

Stackheroは、DockerクラウドCaaS (Containers as a Service) の即時利用可能なソリューションを提供し、多くの利点があります。例えば:

  • docker-compose up だけでコンテナを簡単に本番環境にデプロイ
  • HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://api.your-company.com, https://www.your-company.com, https://backoffice.your-company.com)。
  • プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ
  • ワンクリックでの簡単なアップデート

時間を節約し、生活を簡素化:StackheroのDocker CaaSクラウドホスティング ソリューションを試して、コンテナを本番環境にデプロイするのに5分しかかかりません!

まだStackhero for Dockerサービスをお持ちでない場合は、Stackheroダッシュボードから簡単に作成できます。約2分でアクティブになります。

Stackheroが初めての方は、Dockerコンテナクラウドホスティングを1か月間無料でお試しいただけます。

アプリを本番環境にデプロイする前に、いくつかの設定ファイルを準備する必要があります:

  1. secrets/global.production.examplesecrets/global.productionにコピーします。
  2. secrets/global.productionを編集し、Stackheroダッシュボードから取得したDockerサービスのホスト名で<XXXXXX>.stackhero-network.comを置き換えます。
  3. secrets/my-app.production.examplesecrets/my-app.productionにコピーします。
  4. secrets/my-app.productionを編集し、資格情報を挿入します。
  5. docker/docker-compose.production.ymlを更新し、<XXXXXX>.stackhero-network.comをDockerサービスのホスト名で置き換えます。

本番環境へのデプロイは簡単です:以下を実行します:

make production-deploy

このコマンドはDockerコンテナを作成し、プロジェクトデータを転送して本番環境のDockerサービスに送信します。ブラウザを開き、Dockerサービスのホスト名(例:https://<XXXXXX>.stackhero-network.com)に移動します。REST APIが「Hello World」と応答するはずです。

make productionを使用することもでき、コンテナをデプロイし、リアルタイムログを表示します。

本番環境を監視したり、問題をトラブルシューティングしたりするために、以下のコマンドを使用してログを表示できます:

  • ライブログをストリームするには、make production-logs-liveを実行します。
  • すべての保存されたログを取得するには、make production-logsを実行します。
  • 特定の日のログを取得するには(YYYY-MM-DDを希望の日付に置き換えます)、make production-logs | grep "YYYY-MM-DD"を実行します。

https://<XXXXXX>.stackhero-network.comの代わりに別のドメイン名を使用したい場合、Stackhero for DockerはTraefikを統合してドメイン管理を簡素化します。TraefikはHTTPルーティングとTLS暗号化(HTTPS)を処理します。

ドメイン名をカスタマイズするためのいくつかの例を以下に示します:

  • api.my-company.comをポート5000でTLS暗号化を使用してコンテナmy-app経由で提供するには、docker/docker-compose.production.ymlファイルのlabelsセクションを以下に置き換えます:

        labels:
          - "traefik.enable=true" # このコンテナへのトラフィックをルーティングするためにTraefikを有効にする
          - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # ホストを定義する
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # TLS証明書にletsencryptを使用する
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # ポート5000を指定する
    
  • my-company.comをポート5000でコンテナmy-app経由で提供し、www.my-company.comからmy-company.comへのすべてのリクエストをリダイレクトするには、同じファイルのlabelsセクションを以下に更新します:

        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # 両方のドメインを含める
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt"
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # ポート5000を指定する
    
          # www.my-company.comをmy-company.comにリダイレクトする:
          - "traefik.http.routers.my-app.middlewares=redirect-www"
          - "traefik.http.middlewares.redirect-www.redirectregex.regex=^https://www.my-company.com/(.*)"
          - "traefik.http.middlewares.redirect-www.redirectregex.replacement=https://my-company.com/$${1}"
          - "traefik.http.middlewares.redirect-www.redirectregex.permanent=true"
    

my-company.comwww.my-company.comのDNSを設定し、それぞれがCNAMEとしてhttps://<XXXXXX>.stackhero-network.comのDockerサービスを指すようにすることを忘れないでください。