我有 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
我该如何完成这个任务??
最佳答案
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
中无效
name A word consisting only of alphanumeric characters and underscores, and beginning with an alphabetic character or an underscore. Also referred to as an identifier.
您必须改用下划线字符 _
。
关于shell - 如何使用 shell 文件将参数传递给 docker-compose.yml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43273875/