Это, безусловно, выглядит так, как будто вам нужно передать переменные с написанием SPOTIPY_
, согласно документам .
Однако я также отметил, что ваш код повторяет одни и те же имена переменных несколько раз. Возможно, это может привести к опечаткам, если вы попытаетесь сохранить одинаковые имена переменных в нескольких файлах.
Более простой способ решения этой проблемы может состоять в том, чтобы переменные содержались в файле .env-dev
:
SPOTIPY_CLIENT_ID=my_id
SPOTIPY_CLIENT_SECRET=my_secret
SPOTIPY_REDIRECT_URI=http://localhost
SPOTIPY_CACHE_PATH=/project/api/auth/spotify/.cache
Затем загрузите их в файл docker-compose-dev.yml
:
services:
web:
env_file:
- .env-dev
Затем в коде Python вы можете сделать:
import os, DevelopmentConfig
sp = spotipy.Spotify(auth_manager=spotipy.oauth2.SpotifyOAuth(
os.environ.get('SPOTIPY_CLIENT_ID'),
os.environ.get('SPOTIPY_CLIENT_SECRET'),
os.environ.get('SPOTIPY_REDIRECT_URI'),
scope=DevelopmentConfig.SCOPE,
cache_path = os.environ.get('SPOTIPY_CACHE_PATH')))
Этот метод имеет меньше повторений, хотя загрузка конфигурации обходит ваш config.DevelopmentConfig
объект для этих переменных.
Однако этот метод избегает загрузки переменных в оболочку хоста и вместо этого устанавливает их внутри определенной c службы. Он также разделяет secerts, так что вы можете передать docker-compose.yml
в систему контроля версий