You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将带Nginx反向代理的ASP.NET Core Docker Compose栈部署到DigitalOcean

问题解决指南:Docker Compose镜像推送与DigitalOcean App Platform部署

一、解决docker-compose push报错问题

你执行docker-compose push registry.digitalocean.com/mycontainerregistry/projectweb报错是因为命令用法错误

  • docker-compose push不需要指定镜像地址,它会根据docker-compose.yml里每个服务的image字段配置,推送对应的镜像
  • 先修改docker-compose.yml,把服务的image字段改为注册表地址:
    projectweb:
      image: registry.digitalocean.com/mycontainerregistry/projectweb
      build:
        context: .
        dockerfile: projectweb/Dockerfile
    
    reverseproxy:
      image: registry.digitalocean.com/mycontainerregistry/reverseproxy
      container_name: reverseproxy
      ports:
        - 80:80
        - 443:443
      restart: always
    
  • 重新构建镜像:
    docker-compose build
    
  • 登录DigitalOcean容器注册表:
    docker login registry.digitalocean.com
    
  • 直接执行推送命令即可:
    docker-compose push
    

这样就能把两个服务的镜像都推送到DigitalOcean注册表了。

二、部署到DigitalOcean App Platform(带Nginx反向代理)

方式1:使用自定义Nginx容器作为反向代理

  1. 确保镜像已推送至DigitalOcean注册表(按照上面的步骤完成推送)
  2. 创建App Platform应用
    • 登录DigitalOcean控制台,进入App Platform,点击“Create App”
    • 选择“Container Registry”作为来源,选中你推送的reverseproxyprojectweb镜像
  3. 配置服务关系
    • 同一应用内的服务可通过内部域名访问,格式为<服务名>.default.svc.cluster.local,所以nginx.conf里的反向代理目标要设置为http://projectweb.default.svc.cluster.local(根据实际服务名调整)
    • reverseproxy服务配置对外暴露80和443端口,App Platform会自动处理SSL证书
  4. 部署应用
    • 确认配置后点击“Deploy”,等待部署完成即可

方式2:使用App Platform内置反向代理(更简便)

如果不需要自定义Nginx配置,可直接用平台自带的反向代理:

  1. 推送projectweb镜像到DigitalOcean注册表
  2. 创建App Platform应用,选择该镜像作为服务
  3. 在服务配置中设置web服务的端口(如3000、8080)
  4. 平台会自动生成域名并配置SSL,无需额外Nginx容器

关键配置注意事项

  • 本地测试用的nginx.conf示例(部署到平台需替换为内部域名):
    events {}
    http {
      server {
        listen 80;
        server_name _;
    
        location / {
          proxy_pass http://projectweb:80;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
        }
      }
    }
    

内容的提问来源于stack exchange,提问作者msd

火山引擎 最新活动