在docker-compose yml中重新使用环境variables
是否有可能重复使用多个容器共享的环境variables以避免重复,如下例所示:
version: '2' services: db: image: example/db ports: - "8443:8443" container_name: db hostname: db environment: - USER_NAME = admin - USER_PASSWORD = admin svc: image: example/svc depends_on: - db ports: - "9443:9443" container_name: svc hostname: svc environment: - DB_URL = https://db:8443 - DB_USER_NAME = admin - DB_USER_PASSWORD = admin
您可以使用extends指令让多个容器从基础服务描述inheritanceenvironment
configuration。 例如,将以下内容放在名为base.yml
的文件中:
version: '2' services: base: environment: DB_URL: https://db:8443 DB_USER_NAME: admin DB_USER_PASSWORD: admin
然后在你docker-compose.yml
:
version: '2' services: container1: image: alpine command: sh -c "env; sleep 900" extends: file: base.yml service: base container2: image: alpine command: sh -c "env; sleep 900" extends: file: base.yml service: base environment: ANOTHERVAR: this is a test
然后在container1
里面,你会看到:
DB_URL=https://db:8443 DB_USER_NAME=admin DB_USER_PASSWORD=admin
在container2
里面你会看到:
DB_URL=https://db:8443 DB_USER_NAME=admin DB_USER_PASSWORD=admin ANOTHERVAR=this is a test
你显然可以使用extends
的东西以外的environment
指令; 使用docker-compose时,避免重复是一个很好的方法。
您可以从docker-compose文件中引用本地环境variables。 假设你想要做的是使USER_NAME
与DB_USER_NAME
相同:
泊坞窗,compose.yml
version: '2' services: db: image: example/db ports: - "8443:8443" container_name: db hostname: db environment: - USER_NAME = ${USERNAME} - USER_PASSWORD = ${PASSWORD} svc: image: example/svc depends_on: - db ports: - "9443:9443" container_name: svc hostname: svc environment: - DB_URL = https://db:8443 - DB_USER_NAME = ${USERNAME} - DB_USER_PASSWORD = ${PASSWORD}
然后,运行docker-compose,如:
$ USERNAME="admin" PASSWORD="admin" docker-compose up
另外,对于更长久的事情,更容易打字的经常性的基础上:
$ printf '%s\n%s\n' 'export USERNAME="admin"' 'export PASSWORD="admin"' >> ~/.bash_profile $ source ~/.bash_profile $ docker-compose up
- CoreOS无法使用提供的用户名和密码在云configuration文件中login?
- stream浪者:使用提供者和提供togather
- 我的boot2docker安装似乎没有工作。 我究竟做错了什么?
- 我怎样才能访问我的docker玛丽亚db?
- 在执行docker pull之后,/ usr / local / bin中'太多级别的符号链接'
- 从Docker容器连接到本地主机上的Mysql
- 在涉及目标“DockerBuildServiceReferences”的目标依赖关系图中存在循环依赖关系
- 如何连接到docker Oracle实例
- 什么时候在Docker容器中使用不带`–tty`的`–interactive`?