docker - 如何使用 golang 在不同容器中使用 docker-compose env 文件变量?

标签 docker go docker-compose

.
├── 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

它的工作方式类似于 Dockerfiledocker run -e 中的环境语句。

正如列表类型所暗示的,您可以使用多个文件来覆盖特定服务的一些通用配置键。

关于docker - 如何使用 golang 在不同容器中使用 docker-compose env 文件变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404379/

相关文章:

docker - 从计算机备份数据卷容器

amazon-web-services - 在 AWS 上将 RStudio Shiny 作为 Docker 容器运行?

php - 我正在尝试将 docker 用于带有 nginx 的 php5.6,但配置存在问题

go - 是否可以在不使用界面的情况下使其工作?

angular - 开发 Angular 应用程序时应该使用 Docker 吗?

docker - 如何使用 docker-compose 在不停机的情况下重建和更新容器?

docker - 无法删除 httpOnly :true secure: true cookie using deleteAllCookies() in headless chrome in protractor in docker

go - Firestore 云函数 : Get DocumentSnapshot from the event

dataframe - Golang中如何根据特定值拆分结构体

node.js - Dockerizing 一个 React App : The app starts inside the container, 但它不能从暴露的端口访问