Spring boot 当我将端口设置为环境变量时,Docker compose显示无效端口错误

Spring boot 当我将端口设置为环境变量时,Docker compose显示无效端口错误,spring-boot,docker,docker-compose,Spring Boot,Docker,Docker Compose,我有一个简单的docker compose文件,它启动了我的spring boot应用程序 version: '3' services: applic: build: context: . dockerfile: local.Dockerfile args: - DEBUG_PORT=${DEBUG_PORT} - DEBUG_FLAG=${DEBUG_FLAG} environment: - "

我有一个简单的docker compose文件,它启动了我的spring boot应用程序

version: '3'
services:
  applic:
    build:
      context: .
      dockerfile: local.Dockerfile
      args:
        - DEBUG_PORT=${DEBUG_PORT}
        - DEBUG_FLAG=${DEBUG_FLAG}
    environment:
      - "SPRING_PROFILES_ACTIVE=local"
      - "DEBUG_PORT=5005"
      - "DEBUG_FLAG=true"
    ports:
      - "8083:8083"
      - $DEBUG_PORT:$DEBUG_PORT
    depends_on:
      - mysql
    volumes:
      - "../:/mnt"
当我用
docker compose-up--build
命令启动它时,它会显示以下错误:

applic.ports is invalid: Invalid port ":", should be [[remote_ip:]remote_port[-remote_port]:]port[/protocol]
我做错了什么?我从互联网上尝试了许多解决方案,但没有任何帮助。

将其改为:

"${DEBUG_PORT}:${DEBUG_PORT}"
这是:

args:
        - DEBUG_PORT=${DEBUG_PORT}
        - DEBUG_FLAG=${DEBUG_FLAG}
要工作,首先需要导出它们

export DEBUG_PORT=xxxx && export DEBUG_FLAG=xxxx && docker-compose up --build

似乎是启动容器时变量展开的错误

   ports:
      - "8083:8083"
      - "${DEBUG_PORT}:${DEBUG_PORT}"
在撰写文件的根目录下创建.env

DEBUG_PORT=80
根据问题,您需要在
.env
中定义
DEBUG\u PORT

env_文件
optin将仅在docker中设置环境变量 容器本身。不在撰写期间使用的主机上 “建造”

要将端口定义为env var,应使用
.env
文件作为 描述

在您的情况下,创建一个.env文件,其中包含:

DEBUG\u PORT=5000


不起作用(我试图将env文件添加到docker compose文件中,但它显示了相同的错误。您需要放置linpy“
”${DEBUG\u PORT}:${DEBUG\u PORT}”
是。我按照答案中所述放置了它:-“${DEBUG\u PORT}:${DEBUG\u PORT}”"我将此参数添加到local.env DEBUG_PORT=5005。我使用此env_文件:-local.env将此文件与docker compose连接,但它仍然不起作用。请检查提供的链接尝试启动docker compose--从local/目录构建
。env
必须位于工作目录中,就像compose.ymllook一样。但它是否起作用他是这种情况的唯一解决方案?我的意思是,如果我不想启用调试怎么办?即使我不需要这种模式,我也应该添加导出调试端口。是的,我认为,因为compose将始终尝试计算
“${debug\u PORT}:${debug\u PORT}”
,如果未设置此选项,则它将只看到