我有一個.env包含變數的檔案
VALUE_A=10
NAME=SWARNA
我有一個env.yml檔案。
Information:
value: $VALUE_A
name: $NAME
我有一個 python 檔案 envpy.py
from envyaml import EnvYAML
# read file env.yml and parse config
env = EnvYAML('env.yml')
print(env['Information']['value'])
print(env['Information']['name'])
這是我的 Dockerfile
FROM python:3
ADD envpy.py /
ADD env.yml /
RUN pip install envyaml
CMD [ "python", "./envpy.py" ]
預期output:
10
SWARNA
但我得到了:
VALUE_A
NAME
我正在使用命令來構建 docker 并運行:
docker build -t python-env .
docker run python-env
如何列印值。請糾正我或建議我哪里做錯了。謝謝你。
uj5u.com熱心網友回復:
.env是 docker-compose 的東西,它定義了要插入到 中的環境變數的默認值docker-compose.yml,并且僅在那里。它們在其他任何地方都不可用,當然也不在您的影像中。
您可以通過復制.env到影像和 Python 代碼中來使這些值可用作影像中的環境變數
from dotenv import load_dotenv
load_dotenv()
(這需要您安裝dotenv)。
還請注意,可能有更好的方法來實作您想要的:
- 如果必須在構建時設定這些值,您寧愿在構建時將它們插入到生成的檔案中,并將帶有硬編碼值的檔案復制到影像中。
- 如果這些值在運行時應該是可
ENV覆寫的,只需在 Dockerfile 中使用默認值定義它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/353062.html
上一篇:Docker-執行失敗,運行“makeinstall”
下一篇:將Docker卷掛載為非持久存盤
