【问题标题】:Passing variable from makefile to docker compose file?将变量从makefile传递给docker compose文件?
【发布时间】:2021-11-03 06:57:02
【问题描述】:

在我的 docker-compose 文件中,有超过 3 个服务。我从 docker 命令中传递了一个带有 makefile 的两个变量。但我面临一个问题 - 执行第一个命令后,第二个命令类似没有执行。

请参阅此示例以获得更好的理解-

docker-compose 文件是 -

    version: '3.7'

    services:
         ping:
           container_name: ping_svc
           image: "${PING_IMAGE_NAME}${PING_IMAGE_TAG}" 
           ports:
             - 8080:8080
           command: serve
           environment:
             - CONSUL_URL=consul_dev:8500
             - CONSUL_PATH=ping
           tty: true

         id:
           container_name: id_svc
           image: "${ID_IMAGE_NAME}${ID_IMAGE_TAG}"
           ports:
             - 8081:8081
           command: serve
           environment:
             - CONSUL_URL=consul_dev:8500
             - CONSUL_PATH=id
           tty: true

我的makefile命令是-

    # setting ping_image
    @PING_IMAGE_NAME="ping-svc:" PING_IMAGE_TAG="1.0" docker-compose up -d

    # setting id_image
    @ID_IMAGE_NAME="id-svc:" ID_IMAGE_TAG="1.0" docker-compose up -d

PING_IMAGE_NAMEPING_IMAGE_TAG 设置成功,但下一行未执行。为什么? 有没有更好的方法来做到这一点?

【问题讨论】:

  • GATEWAY_IMAGE_NAME != ID_IMAGE_NAME
  • 对不起,是我的错误,已编辑。
  • 也许创建一个配置文件 (.env) 是更好的方法:docs.docker.com/compose/environment-variables
  • 是的,实际上我必须从命令行传递这些变量。
  • 通过将所有变量放在 1 行中解决了这个问题。

标签: linux docker makefile docker-compose


【解决方案1】:

我通过将所有变量放在一行中解决了这个问题。

像这样-

    @ID_IMAGE_NAME="id-svc:" ID_IMAGE_TAG="1.0" \
    PING_IMAGE_NAME="ping-svc:" PING_IMAGE_TAG="1.0" \
    docker-compose up -d  ping  id

这里pingid 是我的容器名称。

也许问题出在我每次升级 docker-compose 时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2020-06-09
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多