orbstack中为Doker自定义域名 (Custom Domains)的方法参数和命令

社区话题 Linux/macOS 与自动化运维 orbstack中为Doker自定义域名 (Custom Domains)的方法参数和命令

标签: ,

正在查看 1 条回复
  • 作者
    帖子
    • #1139

      追光
      管理员

      根据 OrbStack 文档,其自定义域名功能允许您为容器分配更容易记忆或与生产环境一致的域名,并且可以智能地处理端口,通常无需手动指定。

      自定义域名 (Custom Domains)

      1. 设置方法:
      通过 Docker CLI:在运行容器时,使用 –label (或 -l) 参数设置 dev.orbstack.domains 标签。值是一个逗号分隔的域名列表。
      bash

      docker run --rm -l dev.orbstack.domains=foo.local,bar.local nginx

      通过 Docker Compose:在服务的 labels 部分添加 dev.orbstack.domains。
      yaml

      services:
      nginx:
      image: nginx
      labels:
      dev.orbstack.domains=foo.local,bar.local

      2. 支持的域名格式:
      普通域名:如 foo.local, bar.local。
      通配符域名:支持 通配符,例如 .foo.local 或 .bar.local。这允许所有子域名都指向该容器。

      3. 域名限制:
      目前,自定义域名仅支持 .local 顶级域 (TLD)。这意味着您不能直接将 myapp.com 设置为自定义域名,但可以设置 myapp.local 来模拟。

      4. 主要用途:
      镜像生产环境:可以在本地开发时使用与生产环境相似的域名结构,减少上下文切换。例如,将生产域名 api.orbstack.dev 在本地映射为 api.orbstack.local。

      自定义域名的默认端口 (Ports & Override Port)

      1. 默认行为 (无需指定端口):
      对于 Web 服务 (HTTP/HTTPS),这是 OrbStack 域名系统的核心优势。当您通过浏览器或其他应用访问自定义域名(如 https://foo.local)时,完全不需要指定端口号。
      OrbStack 会自动检测容器内运行的 Web 服务器端口(通常是 80 或 443),并通过其内置的反向代理和 HTTPS 证书系统将请求转发到正确的端口。

      2. 需要指定端口的情况:
      非 Web 服务:当您需要访问容器内运行的非 HTTP 服务(如数据库、缓存等)时,仍然需要在域名后手动指定端口号。例如,连接到一个 PostgreSQL 容器:database.myproject.orb.local:5432。

      3. 手动覆盖端口 (Override Port):
      何时需要:在某些复杂情况下,如果一个容器内运行了多个 Web 服务器(监听不同端口),OrbStack 的自动检测可能会选错端口。
      如何设置:您可以使用 dev.orbstack.http-port 标签来显式指定 OrbStack 应该将 HTTP/HTTPS 流量转发到容器内的哪个端口。
      通过 Docker CLI:
      bash

      docker run --rm -l dev.orbstack.domains=myapp.local -l dev.orbstack.http-port=8080 my-image

      通过 Docker Compose:
      yaml

      services:
      myapp:
      image: my-image
      labels:
      dev.orbstack.domains=myapp.local
      dev.orbstack.http-port=8080

      作用:这个指定的端口不仅用于 HTTP 访问,也会被 OrbStack 的自动 HTTPS 代理用来连接到您的容器。

      总结:
      OrbStack 的自定义域名旨在简化本地开发,让您摆脱 localhost:随机端口 的困扰。对于 Web 服务,它默认是“零端口配置”的,系统会自动处理。只有在访问非 Web 服务或自动端口检测失败时,才需要您手动介入指定端口。

    • #1142

      追光
      管理员
      docker run -d \
        --name your-amh-container \
        -l dev.orbstack.domains=your-site.local \ # 如果您设置了自定义域名
        -l dev.orbstack.http-port=80 \ # ⬅️ 关键:强制指定 Web 服务端口为 80
        -p 80:80 \ # 确保80端口映射(虽然域名访问不需要,但有时直连localhost需要)
        -p 55680:55680 \ # 管理面板端口
        your-amh-image

      也可以这样写

      version: '3'
      services:
        amh:
          image: your-amh-image
          container_name: your-amh-container
          ports:
            - "80:80"
            - "55680:55680"
          labels:
            - "dev.orbstack.domains=your-site.local" # 可选:自定义域名
            - "dev.orbstack.http-port=80" # ⬅️ 关键:强制指定主Web端口为80
正在查看 1 条回复
  • 在下方一键注册,登录后就可以回复啦。