【问题标题】:Docker compose passing parameters to set as environment variables of DockerfileDocker编写传递参数设置为Dockerfile的环境变量
【发布时间】:2022-01-21 12:49:49
【问题描述】:

以下是我的 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"]

start.sh的内容如下:

#!/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

我可以使用具有不同参数的相同图像运行如下:

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

如何使用 docker-compose 实现这一点?我尝试了以下方法,但它不起作用。

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

【问题讨论】:

  • 这看起来合乎逻辑..你能分享一下错误吗?
  • 只是好奇端口映射是如何变化的。不应该图像从容器中公开相同的端口,即:8080、6504 和 9261,如果是的话,只有你的主机端口应该改变。示例:8180:80809221:9261

标签: docker docker-compose dockerfile


【解决方案1】:

替换 = 而不是 所以你的变量看起来:

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

【讨论】:

  • 是的,你成功了。为此浪费了两个小时。谢谢它的工作。
猜你喜欢
  • 2019-09-11
  • 2021-05-19
  • 1970-01-01
  • 2018-08-14
  • 2021-01-23
  • 2018-12-02
  • 2018-09-18
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多