Docker Compose: 增加环境变量
Docker Compose: Increment environment variable
我正在通过 Docker Compose 在本地部署全栈应用程序,并希望从单个环境变量 $PORT
派生后端和前端端口。例如,如果 $PORT = 3000
,则后端端口应为 3000
,前端端口应为 3001
。如果 $PORT = 4000
,则后端端口应为 4000
,前端端口应为 4001
。
为此,我想在我的 docker-compose.yml
:
中做这样的事情
version: "3"
services:
backend:
...
ports:
- "${PORT}:3000"
frontend:
...
ports:
- "$((PORT + 1)):4200"
失败 ERROR: Invalid interpolation format for "environment" option in service "frontend"
。有没有办法在 Docker Compose 中实现这一点?
我认为这不可能。但是你为什么不在你的环境中设置那些端口变量呢?例如 运行 在一切之前:
export PORT=3000 #or whatever number you want
export PORT_INC=$(($PORT+1))
然后你这样使用:
ports:
- "$PORT_INC:4200"
Compose 只支持有限的一组environment variable substitutions:${VARIABLE}
、${VARIABLE:-default}
、${VARIABLE:?error message}
,后两个选项不带冒号。您不能在 Compose 中进行其他替换、计算或 shell 标注。
对于这种特殊情况,您可以让 Docker 为您选择主机端口号。这比您描述的方案更难预测,但不需要任何特殊设置。不要在 ports:
中使用两个数字,只需指定容器端口号
version: '3.8'
services:
backend:
ports:
- '3000'
frontend:
ports:
- '4200'
要找到对应的主机端口号,需要运行docker-compose port
docker-compose port frontend 4200
我正在通过 Docker Compose 在本地部署全栈应用程序,并希望从单个环境变量 $PORT
派生后端和前端端口。例如,如果 $PORT = 3000
,则后端端口应为 3000
,前端端口应为 3001
。如果 $PORT = 4000
,则后端端口应为 4000
,前端端口应为 4001
。
为此,我想在我的 docker-compose.yml
:
version: "3"
services:
backend:
...
ports:
- "${PORT}:3000"
frontend:
...
ports:
- "$((PORT + 1)):4200"
失败 ERROR: Invalid interpolation format for "environment" option in service "frontend"
。有没有办法在 Docker Compose 中实现这一点?
我认为这不可能。但是你为什么不在你的环境中设置那些端口变量呢?例如 运行 在一切之前:
export PORT=3000 #or whatever number you want
export PORT_INC=$(($PORT+1))
然后你这样使用:
ports:
- "$PORT_INC:4200"
Compose 只支持有限的一组environment variable substitutions:${VARIABLE}
、${VARIABLE:-default}
、${VARIABLE:?error message}
,后两个选项不带冒号。您不能在 Compose 中进行其他替换、计算或 shell 标注。
对于这种特殊情况,您可以让 Docker 为您选择主机端口号。这比您描述的方案更难预测,但不需要任何特殊设置。不要在 ports:
中使用两个数字,只需指定容器端口号
version: '3.8'
services:
backend:
ports:
- '3000'
frontend:
ports:
- '4200'
要找到对应的主机端口号,需要运行docker-compose port
docker-compose port frontend 4200