From 6e2ab1a63dbc63f682df53b5d6091adcb393f252 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 27 Aug 2025 19:01:52 -0400 Subject: [PATCH] env: centralize env loading to repo root; add .env.example; compose uses env_file --- .env.example | 16 ++++++++++++++++ README.md | 1 + docker-compose.dev.yml | 6 ++++++ docker-compose.yml | 6 ++++++ docker/crawler-google-alerts/main.py | 4 ++-- docker/crawler/analyze.py | 4 ++-- 6 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..27882a9 --- /dev/null +++ b/.env.example @@ -0,0 +1,16 @@ +# Copy to .env and fill in values + +# Google API key for generative model extraction +GOOGLE_API_KEY= + +# Flask / App settings (optional overrides) +APP_ENV=development +APP_VERSION=0.4.0 + +# Database (if used via environment) +POSTGRES_HOST=db +POSTGRES_PORT=5432 +POSTGRES_DB=ploughshares +POSTGRES_USER=ploughshares +POSTGRES_PASSWORD=ploughshares_password + diff --git a/README.md b/README.md index 824d779..cf24a9b 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ This project uses Woodpecker CI for continuous integration and deployment. The p - `docker-compose.yml` - Default configuration for quick setup - `docker-compose.dev.yml` - Development configuration with live reloading +- `.env` - Environment variables (copy from `.env.example`) - `stack.production.yml` - Production deployment with Docker Swarm - `stack.staging.yml` - Staging deployment with Docker Swarm - `.woodpecker.yml` - CI/CD pipeline configuration diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 0d4c322..1717f82 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -2,6 +2,8 @@ version: '3.8' services: app: + env_file: + - .env build: context: ./docker/ploughshares dockerfile: Dockerfile @@ -49,6 +51,8 @@ services: restart: unless-stopped crawler_google_alerts: + env_file: + - .env build: context: ./docker/crawler-google-alerts image: ploughshares-crawler-google-alerts:dev @@ -63,6 +67,8 @@ services: restart: unless-stopped crawler_marketline: + env_file: + - .env build: context: ./docker/crawler image: ploughshares-crawler-marketline:dev diff --git a/docker-compose.yml b/docker-compose.yml index 02c1aa1..24bfd4d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,7 @@ services: app: + env_file: + - .env build: context: ./docker/ploughshares platforms: @@ -41,6 +43,8 @@ services: restart: unless-stopped crawler_google_alerts: + env_file: + - .env build: context: ./docker/crawler-google-alerts image: ploughshares-crawler-google-alerts:latest @@ -53,6 +57,8 @@ services: restart: unless-stopped crawler_marketline: + env_file: + - .env build: context: ./docker/crawler image: ploughshares-crawler-marketline:latest diff --git a/docker/crawler-google-alerts/main.py b/docker/crawler-google-alerts/main.py index a73f2d2..aca0b5b 100644 --- a/docker/crawler-google-alerts/main.py +++ b/docker/crawler-google-alerts/main.py @@ -5,11 +5,11 @@ import json import os import re import time -from dotenv import load_dotenv +from dotenv import load_dotenv, find_dotenv import requests from get_all_feed_contents import get_all_feed_contents -load_dotenv() +load_dotenv(find_dotenv()) GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY") diff --git a/docker/crawler/analyze.py b/docker/crawler/analyze.py index 476c79b..9338753 100644 --- a/docker/crawler/analyze.py +++ b/docker/crawler/analyze.py @@ -15,9 +15,9 @@ import json import os import re import time -from dotenv import load_dotenv +from dotenv import load_dotenv, find_dotenv -load_dotenv() +load_dotenv(find_dotenv()) GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY")