Docker: 生產平台
此文件屬於Node.js指南的一部分。請在此處查看完整指南:如何使用及部署 Node.js 應用程式與 Docker。
歡迎瀏覽 Stackhero 文件
Stackhero 提供即用型 Docker cloud CaaS (Containers as a Service) 平台,專為快速及可靠的 container 部署而設:
- 只需一條
docker-compose up指令即可部署到生產環境。無需額外設定:直接啟動您的 containers。- 可自訂您的網域名稱,並自動以 HTTPS 保護(例如:https://api.your-company.com、https://www.your-company.com 或 https://backoffice.your-company.com)。
- 享有高效能及強大安全性的專屬私有基礎設施。
- 一鍵套用更新,簡化維護工作,減少管理負擔。
您的 containers 約五分鐘內即可投入生產運作。Stackhero 會為您管理基礎設施、更新及安全,讓您專注於應用程式開發。了解更多 Docker CaaS cloud hosting 的詳情。
如果您尚未擁有 Stackhero for Docker 服務,您可以輕鬆地從您的 Stackhero 儀表板創建一個。它將在大約 2 分鐘內激活。
如果您是 Stackhero 的新用戶,您可以免費試用 Docker 容器雲託管 一個月。
準備首次部署到生產環境
在將應用程式部署到生產環境之前,您需要準備一些配置文件:
- 將
secrets/global.production.example複製到secrets/global.production。 - 編輯
secrets/global.production並將<XXXXXX>.stackhero-network.com替換為來自 Stackhero 儀表板的 Docker 服務主機名。 - 將
secrets/my-app.production.example複製到secrets/my-app.production。 - 編輯
secrets/my-app.production並插入您的憑證。 - 更新
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)。
以下是自定義域名的幾個示例:
-
要通過您的容器
my-app在端口 5000 上提供api.my-company.com並使用 TLS 加密,請更新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" # 使用 letsencrypt 獲取 TLS 證書 - "traefik.http.services.my-app.loadbalancer.server.port=5000" # 指定端口 5000 -
要通過您的容器
my-app在端口 5000 上提供my-company.com並將所有來自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.com和www.my-company.com配置 DNS,以便每個都作為 CNAME 指向您的 Docker 服務https://<XXXXXX>.stackhero-network.com。