Skip to content

Commit 2411904

Browse files
committed
feat: Isolate environment configuration from code
Move environment variable definitions from docker-compose.yml to dedicated .env files. This change aligns with the 12factor.net recommendation of storing configuration in the environment. - Introduces .env.backend.example, .env.db.example, and .env.proxy.example to serve as templates. - Modifies docker-compose.yml to use `env_file` for each service. - Ensures that .env files are ignored by git. Signed-off-by: Denys Fedoryshchenko <[email protected]>
1 parent c767f1e commit 2411904

File tree

5 files changed

+29
-23
lines changed

5 files changed

+29
-23
lines changed

.env.backend.example

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
ALLOWED_HOSTS=["backend", "localhost"]
2+
DB_DEFAULT_PASSWORD_FILE=/run/secrets/postgres_password_secret
3+
DB_DEFAULT_HOST=cloudsql-proxy
4+
DB_DEFAULT_USER=${DB_DEFAULT_USER:-kernelci}
5+
DB_DEFAULT_NAME=${DB_DEFAULT_NAME:-kcidb}
6+
DJANGO_SECRET_KEY=${DJANGO_SECRET_KEY}
7+
DEBUG=${DEBUG:-False}
8+
DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL}
9+
REDIS_HOST=redis
10+
GMAIL_API_TOKEN=gmail_api_token.json
11+
DASH_DB_NAME=${DASH_DB_NAME:-dashboard}
12+
DASH_DB_USER=${DASH_DB_USER:-admin}
13+
DASH_DB_PASSWORD=${DASH_DB_PASSWORD:-admin}
14+
DASH_DB_HOST=dashboard_db
15+
DASH_DB_PORT=${DASH_DB_PORT:-5432}
16+
USE_DASHBOARD_DB=${USE_DASHBOARD_DB:-False}

.env.db.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
POSTGRES_USER=${DASH_DB_USER:-admin}
2+
POSTGRES_PASSWORD=${DASH_DB_PASSWORD:-admin}
3+
POSTGRES_DB=${DASH_DB_NAME:-dashboard}

.env.proxy.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PROXY_TARGET=http://backend:8000

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
application_default_credentials.json
33
.vscode
44
.env
5+
.env.backend
6+
.env.db
7+
.env.proxy
58
.idea
69

710
# Data from docker volume that should only be automatically generated

docker-compose.yml

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,8 @@ secrets:
1515
services:
1616
dashboard_db:
1717
image: postgres:17
18-
environment:
19-
- POSTGRES_USER=${DASH_DB_USER:-admin}
20-
- POSTGRES_PASSWORD=${DASH_DB_PASSWORD:-admin}
21-
- POSTGRES_DB=${DASH_DB_NAME:-dashboard}
18+
env_file:
19+
- .env.db
2220
volumes:
2321
- dashboard-db-data:/var/lib/postgresql/data
2422
networks:
@@ -69,23 +67,8 @@ services:
6967
- dashboard_db
7068
secrets:
7169
- postgres_password_secret
72-
environment:
73-
- 'ALLOWED_HOSTS=["backend", "localhost"]'
74-
- DB_DEFAULT_PASSWORD_FILE=/run/secrets/postgres_password_secret
75-
- DB_DEFAULT_HOST=cloudsql-proxy
76-
- DB_DEFAULT_USER=${DB_DEFAULT_USER:-kernelci}
77-
- DB_DEFAULT_NAME=${DB_DEFAULT_NAME:-kcidb}
78-
- DJANGO_SECRET_KEY=${DJANGO_SECRET_KEY}
79-
- DEBUG=${DEBUG:-False}
80-
- DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL}
81-
- REDIS_HOST=redis
82-
- GMAIL_API_TOKEN=gmail_api_token.json
83-
- DASH_DB_NAME=${DASH_DB_NAME:-dashboard}
84-
- DASH_DB_USER=${DASH_DB_USER:-admin}
85-
- DASH_DB_PASSWORD=${DASH_DB_PASSWORD:-admin}
86-
- DASH_DB_HOST=dashboard_db
87-
- DASH_DB_PORT=${DASH_DB_PORT:-5432}
88-
- USE_DASHBOARD_DB=${USE_DASHBOARD_DB:-False}
70+
env_file:
71+
- .env.backend
8972

9073
dashboard:
9174
build:
@@ -110,5 +93,5 @@ services:
11093
published: 80
11194
protocol: tcp
11295
mode: host
113-
environment:
114-
- PROXY_TARGET=http://backend:8000
96+
env_file:
97+
- .env.proxy

0 commit comments

Comments
 (0)