Cro:如何为.cro.yml 中的每个服务定义端口?

Mim*_*net 7 cro raku

使用cro stub http test test创建存根服务后,我在.cro.yml 中定义了 TEST_PORT 环境变量:

---
id: test
cro: 1
name: "test"
endpoints: 
  - 
    id: http
    name: HTTP
    protocol: http
    host-env: TEST_HOST
    port-env: TEST_PORT
links:  []
entrypoint: service.p6
env:
  - name: TEST_PORT
    value: "3001"
...
Run Code Online (Sandbox Code Playgroud)

尽管如此,Cro 仍然使用默认的 20000 端口。Alex Schroeder导出环境变量以在不同的端口中启动 Cro。命令“ export TEST_PORT="3001" && cro run仍然使用默认端口。

在 Cro 中定义服务端口的正确形式是什么?

Jon*_*ton 10

cro run工具会自动为它启动的所有服务分配端口。这是为了确保他们获得一个不用于其他用途的自由端口。因此,它将使用它选择的端口注入环境变量。使用时不能选择端口cro run.

要在选定的端口上运行服务,请不要使用cro run,也就是说,只需导出环境变量并像调用服务一样raku -Ilib service.p6(或者perl6 -Ilib service.p6如果您有较旧的安装,则使用)。这样,服务将看到包含您选择的端口的环境变量。默认的Dockerfile设置也是这样做的。

请注意,该cro开发工具仅用作开发时间辅助工具,不适用于生产部署(这是选择端口很重要的主要情况)。