我们如何在生产环境中为docker-compose指定环境变量?
例如,以下是我如何在开发环境的当前docker-compose文件中指定env变量的摘要:
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- PGUSER=postgres
- PGHOST=postgres
- PGDATABASE=postgres
- PGPASSWORD=postgres_password
- PGPORT=5432
但是我不能在生产环境中做同样的事情,因为代码会在GitHub上推送,并且会暴露环境变量。
那么我们到底如何解决这个问题呢?
答案 0 :(得分:2)
您可以将环境变量放在 .env 文件中。您不会在github中提交此文件。它就像一个配置文件。要了解有关 .env 文件的更多信息,可以进行以下检查: https://docs.docker.com/compose/env-file/
然后,您可以在compose文件中使用变量。您可以从这里检查它: https://docs.docker.com/compose/compose-file/#variable-substitution
添加所需的答案: 您可以根据生产或开发为环境变量设置不同的值。您也可以管理它。试试这个链接: https://docs.docker.com/compose/environment-variables/
您需要运行以下命令以将环境文件与撰写文件链接:
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
希望,这个答案可以解决您的问题。
答案 1 :(得分:1)
您可以使用几种方法:
.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 run -e DEBUG=1 web python console.py
我个人更喜欢第一个。