如何在 docker-compose in production 中使用环境变量?
How to use environment variables in docker-compose in production?
生产环境中docker-compose具体如何指定环境变量?
例如,下面是我如何在当前开发环境的 docker-compose 文件中指定环境变量的片段:
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- PGUSER=postgres
- PGHOST=postgres
- PGDATABASE=postgres
- PGPASSWORD=postgres_password
- PGPORT=5432
但是我不能对生产环境做同样的事情,因为代码会被推送到 GitHub 并且它会暴露环境变量。
那么我们究竟如何解决这个问题呢?
您可以将环境变量放在.env 文件中。您不会在 github 中提交此文件。它就像一个配置文件。要了解有关 .env 文件的更多信息,您可以查看:
https://docs.docker.com/compose/env-file/
然后就可以使用compose文件中的变量了。你可以从这个检查它:
https://docs.docker.com/compose/compose-file/#variable-substitution
添加所需的答案:
根据生产或开发,您可以为环境变量设置不同的值。您也可以管理它。试试这个 link:
https://docs.docker.com/compose/environment-variables/
你需要运行这个命令到link环境文件和组合文件:
docker-compose --env-file your_environment_file_location up
所以,为了发展,
docker-compose --env-file development_environment_file_location up
对于生产,
docker-compose --env-file production_environment_file_location up
希望这个答案能解决您的问题。
您可以使用多种方式:
- 一个可以是每个环境使用一个
.ENV
文件(当然你不必提交)
https://docs.docker.com/compose/environment-variables/#the-env-file
$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: '3'
services:
web:
image: "webapp:${TAG}"
通过这种方式,您可以在 Docker Compose 文件中定义变量,但不能定义实际值。
- 其他选项是为 Docker Compose 命令中的变量传递这些值:
docker-compose run -e DEBUG=1 web python console.py
个人比较喜欢第一种
生产环境中docker-compose具体如何指定环境变量?
例如,下面是我如何在当前开发环境的 docker-compose 文件中指定环境变量的片段:
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- PGUSER=postgres
- PGHOST=postgres
- PGDATABASE=postgres
- PGPASSWORD=postgres_password
- PGPORT=5432
但是我不能对生产环境做同样的事情,因为代码会被推送到 GitHub 并且它会暴露环境变量。
那么我们究竟如何解决这个问题呢?
您可以将环境变量放在.env 文件中。您不会在 github 中提交此文件。它就像一个配置文件。要了解有关 .env 文件的更多信息,您可以查看: https://docs.docker.com/compose/env-file/
然后就可以使用compose文件中的变量了。你可以从这个检查它: https://docs.docker.com/compose/compose-file/#variable-substitution
添加所需的答案: 根据生产或开发,您可以为环境变量设置不同的值。您也可以管理它。试试这个 link: https://docs.docker.com/compose/environment-variables/
你需要运行这个命令到link环境文件和组合文件:
docker-compose --env-file your_environment_file_location up
所以,为了发展,
docker-compose --env-file development_environment_file_location up
对于生产,
docker-compose --env-file production_environment_file_location up
希望这个答案能解决您的问题。
您可以使用多种方式:
- 一个可以是每个环境使用一个
.ENV
文件(当然你不必提交)
https://docs.docker.com/compose/environment-variables/#the-env-file
$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: '3'
services:
web:
image: "webapp:${TAG}"
通过这种方式,您可以在 Docker Compose 文件中定义变量,但不能定义实际值。
- 其他选项是为 Docker Compose 命令中的变量传递这些值:
docker-compose run -e DEBUG=1 web python console.py
个人比较喜欢第一种