首页 > 解决方案 > Cro:如何在 .cro.yml 中为每个服务定义端口?

问题描述

使用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"
...

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

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

标签: rakucro

解决方案


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

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

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


推荐阅读