gpt4 book ai didi

docker - docker-compose.yml 中的整数变量表达式

转载 作者:行者123 更新时间:2023-12-03 14:43:20 24 4
gpt4 key购买 nike

我想在 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))表达式在 shell 中有效,但在我的 *.yml 文件中无效。

我得到这个错误:
ERROR: Invalid interpolation format for "ports" option in service "adminserver": "$((BASE_PORT+1)):8001"

知道如何使它工作吗?

最佳答案

Docker Compose 只是不支持这一点。

在您的示例中,您在主机端和容器端都有一系列连续端口。 The ports: syntax确实支持这种模式:

ports:
- '10000-10003:8000-8003'

仍然没有表达式解析器或数学功能,但你可以写
ports:

- '${BASE_PORT}-${FINAL_PORT}:8000-8003'

这将更接近您的需要。

关于docker - docker-compose.yml 中的整数变量表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com