Я хотел бы использовать целочисленное выражение в docker-compose.yml
для установки портов на основе переменной BASE_PORT
.
У меня есть файл .env
со следующим содержимым:
BASE_PORT=57900
Мой стартовый bash-скрипт выглядит следующим образом:
#/bin/sh
. .env
docker-compose stop
docker-compose rm -v -f
docker-compose up -d adminserver
docker-compose.yml
...
services:
adminserver:
image: ....
hostname: ...
ports:
- ${BASE_PORT}:8001
...
Эта конфигурация работает как талисман, docker ps | grep 8001
возвращается с правильным содержимым.
Но я хотел бы использовать больше конфигураций портов и больше ports
разделов:
...
services:
adminserver:
image: ....
hostname: ...
ports:
- $((BASE_PORT+1)):8001
- $((BASE_PORT+2)):8002
- $((BASE_PORT+3)):8003
...
databaseserver:
image: ....
hostname: ...
ports:
- $((BASE_PORT+10)):1541
zookeeper:
image: ....
hostname: ...
ports:
- $((BASE_PORT+30)):2181
kafka:
image: ....
hostname: ...
ports:
- $((BASE_PORT+40)):9092
- $((BASE_PORT+41)):9093
- $((BASE_PORT+42)):9094
Выражение $((BASE_PORT+1))
работает в оболочке, но не работает в моем файле * .yml.
Я получаю эту ошибку обратно:
ERROR: Invalid interpolation format for "ports" option in service "adminserver": "$((BASE_PORT+1)):8001"
Любая идея, как сделатьэто работает?