.
├── articaleServer
│ ├── Dockerfile
│ ├── main.go
│ └── sources.json
├── butler
│ ├── Dockerfile
│ ├── main.py
│ └── requirements.txt
├── docker-compose.yml
├── frontEnd
│ ├── Dockerfile
│ ├── main.go
│ ├── tags.json
│ └── templates
│ ├── auth.html
│ ├── feed.html
│ ├── footer.html
│ ├── header.html
│ ├── main.html
│ └── today.html
└── server
├── Dockerfile
├── keys
│ ├── app.rsa
│ └── app.rsa.pub
└── main.go
.环境
MONGO_USERNSME=user
MONGO_USERNSME=password
我在 docker-compose.yml 的路径中有 .env 文件,我需要在其他容器(articaleServer、管家、服务器)中使用变量形成它,比如 go 文件
mongoDBDialInfo := &mgo.DialInfo{
Addrs: []string{"mongodb://mongo:27017"},
Username: os.Getenv("MONGO_USERNSME"),
Password: os.Getenv("MONGO_PASSWORD"),
}
但是 go 看不到它并传递 nil
最佳答案
.env
文件与 docker-compose.yml
位于同一目录中,仅用于组合文件中的变量替换。
另一方面,您可以定义一个 env_file
键以在运行时将环境变量从文件传递到容器:
services:
some_service:
image: someimg
env_file:
- .env
它的工作方式类似于 Dockerfile
或 docker run -e
中的环境语句。
正如列表类型所暗示的,您可以使用多个文件来覆盖特定服务的一些通用配置键。
关于docker - 如何使用 golang 在不同容器中使用 docker-compose env 文件变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404379/