如何使用shell文件将参数传递给docker-compose.yml

时间:2017-04-07 08:56:30

标签: shell docker docker-compose docker-ucp

我的docker-compose.yml如下:

version: '2'

services:
  eureka-server:
    image: some-dtr-name/some-orgname/some-reponame:some-versionname
    mem_limit: somememory
    environment:
      SPRING_PROFILES_ACTIVE: some-profile
      JAVA_OPTS: -Xms256m -Xmx512m
    ports:
    - "some-port:some-port"
    restart: always
    networks:
    - cloud

networks:
  cloud:
   driver: bridge

我想传递some-dtr-name,some-orgname,some-reameame,some-versionname,somememory,some-profile,some-profile,some-port作为docker-compose文件的一个假设。 我正在使用shell文件执行此任务。

#!/bin/bash
some-dtr-name="$1"
some-orgname="$2"
some-reponame="$3"
some-versionname="$4"
somememory="$5"
some-profile="$6"
some-profile="$7"
some-port="$8"

docker-compose up

我该怎么做这个任务?

1 个答案:

答案 0 :(得分:0)

Docker compose使用${}语法支持环境变量替换:https://docs.docker.com/compose/compose-file/#variable-substitution

因此,如果您在运行some_port之前定义了环境变量docker-compose,则可以在docker-compose文件中将其称为${some_port}

ports:
- "${some_port}:${some_port}"

另一点需要注意的是,示例代码中的变量名称包含短划线-,这在bash

中无效
  

name一个单词,仅由字母数字字符和下划线组成,以字母字符或下划线开头。也称为标识符。

您必须使用下划线字符_