我已经使用 python 和 redis 创建了一个示例 docker 应用程序。 Python连接redis来存储数据。我想将 password
servername
作为 docker-compose 文件中的环境变量传递给 redis。我怎样才能做到这一点?
Docker 组合:
version: "3.7"
services:
nginx_app:
image: nginx:latest
depends_on:
- flask_app
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
ports:
- 8082:80
networks:
- my_project_network
flask_app:
build:
context: .
dockerfile: Dockerfile
expose:
- 5000
depends_on:
- redis_app
networks:
- my_project_network
redis_app:
image: redis:latest
command: redis-server --requirepass pass123 --appendonly yes
volumes:
- ./redis-vol:/data
expose:
- 6379
networks:
- my_project_network
networks:
my_project_network:
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis_app', port=6379, password='pass123')
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello World! I have been seen %s times.' % redis.get('hits')
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
最佳答案
只需在 Flask 应用程序中定义环境变量并在 python 应用程序中执行 os.getenv ,然后将它们添加到 docker compose 文件中的 Flask 应用程序服务中:
flask_app:
environment:
RABBIT_USER: guest
RABBIT_PASSWORD: pass123
在你的 python 文件中放置以下位置:
import os
redis = Redis(host='redis_app', port=6379, password=os.getenv('RABBIT_PASSWORD'))
关于python - 将 env 变量传递给 docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62961019/