Docker compose passing parameters to set as environment variables of Dockerfile

The following is my Dockerfile

FROM openjdk:11.0.7-jre-slim
ARG HTTP_PORT \
    NODE_NAME \
    DEBUG_PORT \
    JMX_PORT
ENV APP_ROOT=/root \
    HTTP_PORT=$HTTP_PORT \
    NODE_NAME=$NODE_NAME \
    DEBUG_PORT=$DEBUG_PORT \
    JMX_PORT=$JMX_PORT  
ADD spring-boot-app.jar $APP_ROOT/spring-boot-app.jar
ADD Config $APP_ROOT/Config
ADD start.sh $APP_ROOT/start.sh
WORKDIR ${APP_ROOT}
CMD ["/root/start.sh"]

Contents of start.sh as follows:

#!/bin/bash
java -Dnode.name=$NODE_NAME -Dapp.port=$HTTP_PORT -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar spring-boot-app.jar

I am able to run using same image with different params as follows:

docker run -p 9261:9261 -p 65054:65054 -p 8080:8080 -itd --name=app-1 -e HTTP_PORT=8080 -e NODE_NAME=NODE1 -e DEBUG_PORT=9261 -e JMX_PORT=65054 my-image

docker run -p 9221:9221 -p 65354:65354 -p 8180:8180 -itd --name=app-2 -e HTTP_PORT=8180 -e NODE_NAME=NODE2 -e DEBUG_PORT=9221 -e JMX_PORT=65354 my-image

How to achieve this using docker-compose? I have tried the following but it is not working.

version: '3.1'
services:
  app-alpha:
    image: my-image
    environment:
      - HTTP_PORT:8080
      - NODE_NAME:NODE1
      - DEBUG_PORT:9261
      - JMX_PORT:65054
    ports:
      - 9261:9261
      - 65054:65054
      - 8080:8080
  app-beta:
    image: my-image
    environment:
      - HTTP_PORT:8180
      - NODE_NAME:NODE2
      - DEBUG_PORT:9221
      - JMX_PORT:65354
    ports:
      - 9221:9221
      - 65354:65354
      - 8180:8180

Replace = instead : So your variables looks:

environment:
      - HTTP_PORT=8080
      - NODE_NAME=NODE1
      - DEBUG_PORT=9261
      - JMX_PORT=65054