Docker: 生產平台
本文件是Node.js指南的一部分。請在此處查看完整指南:如何使用及部署 Node.js 應用程式與 Docker。
👋 歡迎來到 Stackhero 文件!
Stackhero 提供一個即用型的 Docker cloud 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提供的最佳性能和強大的安全性。
- 只需點擊即可輕鬆更新。
節省時間並簡化您的生活:只需 5 分鐘即可嘗試 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,以便每個都指向您的 Docker 服務的 CNAMEhttps://<XXXXXX>.stackhero-network.com。