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提供的最佳性能和强大安全性。
- 只需点击即可轻松更新。
节省时间并简化您的生活:只需 5 分钟即可尝试 Stackhero 的 Docker CaaS 云托管 解决方案,并将您的容器部署到生产环境!
如果您还没有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服务的CNAME,地址为https://<XXXXXX>.stackhero-network.com。