Cro: Как определить порт для каждого сервиса в .cro.yml? - PullRequest
7 голосов
/ 23 марта 2020

После создания служб-заглушек с помощью теста проверки заглушки cro * http * я определил переменную среды TEST_PORT в .cro.yml :

---
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?

1 Ответ

10 голосов
/ 23 марта 2020

Инструмент cro run автоматически назначает порты всем службам, которые он запускает. Это должно гарантировать, что они получат свободный порт, который не используется для чего-то другого. Таким образом, он будет вводить переменные среды с выбранными портами. Вы не можете выбрать порт при использовании cro run.

Чтобы запустить службу на выбранных портах, сделайте это без cro run, то есть просто экспортируйте переменные среды и вызовите службу как raku -Ilib service.p6 (или с perl6 -Ilib service.p6, если у вас более старая установка). Таким образом, служба увидит переменную среды, содержащую выбранный вами порт. По умолчанию Dockerfile также настроен на это.

Обратите внимание, что инструмент разработки cro предназначен исключительно для помощи время разработки и не подходит для развертывания в производственной среде. (это основной случай, когда выбор порта будет иметь значение).

...