docker-compose 不使用 Flask 设置环境变量

Mez*_*zin 6 python flask docker docker-compose

运行 Flask 容器,当我尝试读取环境变量时,它们不是由 docker compose 设置的。我正在使用 docker-compose 文件版本 2

compose file:
    services:
        test
             build: ./test
             image: test:1.0
             container_name: test_flask
             ports:
                  - "80:80"
             env_file: .env
             environment:
                  - COUCHDB=http://192.168.99.100:5984
             depends_on:
                  - couchdb
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用 env_file 和环境指令?我还尝试过将值放在双引号、单引号、无引号中,但都不起作用。.env 文件包含:

  COUCHDB="http://192.168.99.100:5984", also tried without quotes
Run Code Online (Sandbox Code Playgroud)

然后我从 python 代码中读取变量,如下所示:

COUCH_SERVER = os.environ["COUCHDB"]
Run Code Online (Sandbox Code Playgroud)

我也尝试过 os.environ.get('COUCHDB')

没有一个起作用。

服务器从 Dockerfile 启动,如下所示:

CMD服务apache2重启

我使用以下命令启动容器:

docker-compose up 测试

我正在使用 Docker for Windows 工具箱,版本为:

Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 08:47:51 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.04.0-ce
 API version:  1.28 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Wed Apr  5 18:45:47 2017
 OS/Arch:      linux/amd64
 Experimental: false
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助

Ger*_*man 8

我给您留下了一个示例,说明如何从应用程序获取环境变量。

docker-compose.yml

version: '2'

services:
  app:
      image: python:2.7
      environment:
        - BAR=FOO
      volumes:
        - ./app.py:/app.py
      command: python app.py
Run Code Online (Sandbox Code Playgroud)

应用程序.py

import os

print(os.environ["BAR"])
Run Code Online (Sandbox Code Playgroud)