我有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
我想传递一些 dtr 名称、一些组织名称、一些 reponame、一些版本名称、一些内存、一些配置文件、一些配置文件、一些端口作为 docker-compose 文件的 aurgument。我正在使用外壳文件执行此任务。
#!/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
我该如何完成此任务?
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 仅由字母数字字符和下划线组成,以字母字符或下划线开头的单词。也称为标识符。
您必须改用下划线字符_
。