3

我有 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-reponame、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

我该怎么做这个任务??

4

1 回答 1

0

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

因此,如果您some_port定义了环境变量,则在运行之前docker-compose,您可以像${some_port}在 docker-compose 文件中一样引用它。

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

另一件需要注意的是,您的示例代码中的变量名称包含破折号-,这在bash

名称 仅由字母数字字符和下划线组成并以字母字符或下划线开头的单词。也称为标识符。

您必须改用下划线字符_

于 2017-04-08T10:48:34.633 回答