docker-compose.yml
version: '2'
services:
app:
build:
context: .
command: python src/app.py
restart: on-failure
depends_on:
- db
environment:
- TJBOT_DB_HOST=db
- TJBOT_API_KEY
- TJBOT_AUTO_QUESTION_TIME
env_file:
- .env
db:
image: mongo:3.0.14
volumes:
- mongodbdata:/data/db
volumes:
mongodbdata:
如果更改.env
文件,如何在最小的停机时间内重新加载容器以使用新的环境变量?
如果您使用docker-compose运行yml,则可以运行docker-compose up -d
它,它将重新创建所有具有更改的容器,并保持所有不变的服务不变。
$ cat docker-compose.env2.yml
version: '2'
services:
test:
image: busybox
# command: env
command: tail -f /dev/null
environment:
- MY_VAR=hello
- MY_VAR2=world
test2:
image: busybox
command: tail -f /dev/null
environment:
- MY_VAR=same ole same ole
$ docker-compose -f docker-compose.env2.yml up -d
Creating network "test_default" with the default driver
Creating test_test_1
Creating test_test2_1
$ vi docker-compose.env2.yml # edit the file to change MY_VAR
$ docker-compose -f docker-compose.env2.yml up -d
Recreating test_test_1
test_test2_1 is up-to-date
如果您docker stack deploy -c docker- compose.yml
使用版本3文件格式运行容器,则可以对服务进行滚动更新,如果您有多个服务实例在运行,它将防止任何停机。此功能仍是非常新的功能,您需要1.13.1修复某些更新问题,并且与任何新功能一样,错误仍在解决中。
问题内容: 是否可以重用在多个容器之间共享的环境变量以避免重复,如本示例所示: 问题答案: 该选项可能是好的,但它不支持在撰写文件。其他走的方式是: 扩展名字段(撰写文件3.4+) 如果可以使用3.4+组成文件,则扩展名字段可能是最佳选择: docker-compose.yml env_file指令 docker-compose.yml variables.env * 项目根目录中的 *.env
我希望能够在docker compose中使用env变量。yml,值在docker compose up时传入。这就是一个例子。 我今天用基本的docker run命令来做这件事,它包含在我自己的脚本中。有没有一种方法可以在没有任何bash包装器的情况下用compose实现它?
问题内容: 我希望能够在docker-compose.yml中使用env变量,并在docker-compose时传入值。这就是例子。我今天使用基本的docker run命令来执行此操作,该命令包装在我自己的脚本中。没有任何这样的bash包装器,有没有办法通过compose实现它? 问题答案: 创建一个,这是您的with环境变量。 假设您的环境变量在文件“ env.sh”中 将以下代码放入sh文件中
问题内容: 我正在尝试设置一个postgres容器,并希望使用以下命令设置postgres登录名: 所以我像这样创建了docker-compose.yml 我还尝试了将环境变量声明为db部分的其他语法: 但是这些选项似乎都不起作用,因为无论出于什么原因,无论何时我尝试使用各种连接字符串连接到postgres数据库: 与抱怨没有用户数据库相反,它们都给我身份验证失败。 问题答案: 您收到的身份验证错
使用ec2插件为Jenkins上的耦合作业配置了自动从机。在连接到主服务器之前,我需要重写从服务器的几个环境变量。下面是init脚本,它在作为slave连接之前运行。我做错了什么。谁能帮帮我吗? Jenkins版本:1.656 Amazon EC2插件:1.31
问题内容: 我非常喜欢使用docker-compose。 例如。在我的服务器上,当我想通过较小的更改来更新我的应用程序时,我只需要完美运行即可。 但是有时候,我需要重建(例如,我添加了一个npm依赖项,需要再次运行)。 在这种情况下,我愿意。 我希望这能: 创建我的容器的新实例 停止现有的容器(在较新的容器完成建造之后) 开始新的 (可选)删除旧的,但是可以手动完成 但是实际上,它似乎又重新启动了