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

标签 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-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/

相关文章:

shell - 在一个值中获取地址的远程 ip 以在 shell 脚本中使用

linux - 使用 Shell 脚本下载文件

azure - AWX docker : How to authenticate with Azure using Active Directory. 对我不起作用

docker - 将多个容器副本连接到单个容器而不会发生端口冲突

linux - 如何在没有 XML 解析器的情况下使用 shell 脚本根据模式获取子字符串

linux - 如何在 RHEL7 中将 shell 脚本作为服务?

laravel - Gitlab CI和Docker迁移时引发错误

php - 安装mongodb pecl软件包时出现问题:/tmp/pear/temp/mongodb/configure:./configure.lineno:第1行:语法错误:引号未终止

Docker 持久卷没有权限 (Apache Solr)

docker 。如何将参数传递给 FROM 子句?