【问题标题】:Docker-compose env after reboot重启后 Docker-compose env
【发布时间】:2018-02-14 12:42:08
【问题描述】:

我在 docker 机器上部署了一个容器,使用 restart: always 作为重启策略。 如果我没记错的话,这应该在机器重启时重启容器。

但是环境变量会发生什么?

他们被保留了吗?如果是,它们存储在哪里?

谢谢!

【问题讨论】:

  • 您使用 env_file 或环境映射它们?
  • 是的,使用 .env 文件。

标签: docker-compose docker-machine


【解决方案1】:

这些值与容器启动时的值一起保留。您可以考虑以下文件

version: '3'
services:
  envtest:
    image: alpine
    command: sh -c "echo X=$$X and Y=$$Y && exec tail -f /dev/null"
    restart: always
    environment:
      X: ${X}
    env_file:
      - env_file

.env

X=Y

env_file

Y=Z

使用下面的方法运行容器,然后重新启动

docker-compose up -d

现在更改文件如下

X=A
Y=B

然后重启系统并运行

$ docker-compose logs
Attaching to envtest_envtest_1
envtest_1  | X=Y and Y=Z
envtest_1  | X=Y and Y=Z

如您所见,它也将具有环境,并且不会拾取您使用的源 env 文件中发生的任何更改

【讨论】:

  • 谢谢。这意味着,它存储在图像中并且可以进行逆向工程。
  • 是的。为此,您需要使用 docker swarm 和 docker secrets。但不适用于单个容器
  • 一个可重复的例子的惊人答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 2018-09-07
  • 2019-12-21
  • 2021-02-03
相关资源
最近更新 更多