Update environment variables and configurations

This commit is contained in:
2024-02-28 14:28:19 +08:00
parent 492c03bfcf
commit 5e13f7795e
4 changed files with 67 additions and 19 deletions
+10 -3
View File
@@ -1,12 +1,19 @@
# Environment variables for docker-compose.yml # Environment variables for docker-compose.yml
LOG_LEVEL="DEBUG" LOG_LEVEL="DEBUG"
NETWORK=web NETWORK="web"
## dashboard configs ## dashboard configs
HOST="furyhawk.lol" HOST="furyhawk.lol"
# subdomain for dashboard. # subdomain for dashboard.
DASHBOARD_HOST="dashboard.furyhawk.lol" DASHBOARD_HOST="dashboard.furyhawk.lol"
# log file path on host machine
LOG_PATH=./logs
## TLS configs
CERT_PATH=./certs
ACME_PATH=./acme.json
# The following are the environment variables for the streamlit app # The following are the environment variables for the streamlit app
FIN_LOCATION="/fin" FIN_LOCATION="/fin"
STREAMLIT_FIN_SERVER_PORT="8501" STREAMLIT_FIN_SERVER_PORT="8501"
@@ -14,8 +21,8 @@ BAI_LOCATION="/bai"
STREAMLIT_BAI_SERVER_PORT="8502" STREAMLIT_BAI_SERVER_PORT="8502"
# user/pass # user/pass
DASHBOARD_USER=admin DASHBOARD_USER="test"
DASHBOARD_PASSWORD=pass DASHBOARD_PASSWORD="$apr1$2E4PEW8M$/wEgFNKX71h.YYMywV7WZ/"
OSRM_ALGORITHM="mld" OSRM_ALGORITHM="mld"
OSRM_THREADS=2 OSRM_THREADS=2
+7 -7
View File
@@ -3,21 +3,21 @@ This simple project uses Traefik as a reverse proxy to a Streamlit application a
## Requirements ## Requirements
- Docker Compose - Docker Compose
- Python 3.9 - Python 3.11
## Local Deployment ## Local Deployment
#### Python: #### Python:
1. `cd src` 1. `cd src`
2. `pip install -r requirements.txt` 2. `pip install -r requirements.txt`
3. `streamlit run app.py` 3. `streamlit run app.py`
#### Docker: #### Docker:
1. `sudo docker-compose -f local.yml up --build` 1. `docker compose -f local.yml up --build`
## Production Deployment ## Production Deployment
1. In `compose/traefik/traefik.yml`, change `example@test.com` to your email. 1. In `compose/traefik/traefik.yml`, change `example@test.com` to your email.
2. In `compose/traefik/traefik.yml`, change `example.com` to your domain. 2. In `compose/traefik/traefik.yml`, change `example.com` to your domain.
3. `docker compose -f production.yml up --build -d --remove-orphans` 3. `docker compose -f production.yml up --build -d --remove-orphans`
### Notes: ### Notes:
Feel free to make a PR or get in contact with me on Discord at yoyojoe#5510.
+23 -1
View File
@@ -38,12 +38,18 @@ http:
routers: routers:
dashboard: dashboard:
rule: "Host(`dashboard.furyhawk.lol`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))" rule: "Host(`dashboard.furyhawk.lol`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
entryPoints:
- web-secure
service: api@internal service: api@internal
middlewares: middlewares:
- auth - auth
tls: tls:
# https://docs.traefik.io/master/routing/routers/#certresolver # https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
web-secure-router: web-secure-router:
rule: "Host(`furyhawk.lol`, `www.furyhawk.lol`, `bai.furyhawk.lol`) || PathPrefix(`/bai`)" rule: "Host(`furyhawk.lol`, `www.furyhawk.lol`, `bai.furyhawk.lol`) || PathPrefix(`/bai`)"
@@ -56,6 +62,10 @@ http:
tls: tls:
# https://docs.traefik.io/master/routing/routers/#certresolver # https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
fin-router: fin-router:
rule: "Host(`fin.furyhawk.lol`)" rule: "Host(`fin.furyhawk.lol`)"
entryPoints: entryPoints:
@@ -67,6 +77,10 @@ http:
tls: tls:
# https://docs.traefik.io/master/routing/routers/#certresolver # https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
blog-router: blog-router:
rule: "Host(`blog.furyhawk.lol`)" rule: "Host(`blog.furyhawk.lol`)"
entryPoints: entryPoints:
@@ -91,12 +105,16 @@ http:
tls: tls:
# https://docs.traefik.io/master/routing/routers/#certresolver # https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
middlewares: middlewares:
auth: auth:
basicAuth: basicAuth:
users: users:
- "test:$apr1$2E4PEW8M$/wEgFNKX71h.YYMywV7WZ/" - ${DASHBOARD_USER}:${DASHBOARD_PASSWORD}
csrf: csrf:
# https://doc.traefik.io/traefik/middlewares/http/headers/#hostsproxyheaders # https://doc.traefik.io/traefik/middlewares/http/headers/#hostsproxyheaders
# https://docs.djangoproject.com/en/dev/ref/csrf/#ajax # https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
@@ -141,3 +159,7 @@ providers:
file: file:
filename: /etc/traefik/traefik.yml filename: /etc/traefik/traefik.yml
watch: true watch: true
docker:
network: {{env "NETWORK"}}
exposedByDefault: true
endpoint: "unix:///var/run/docker.sock"
+27 -8
View File
@@ -2,6 +2,8 @@ version: '3.7'
x-environment: &default-environment x-environment: &default-environment
LOG_LEVEL: "DEBUG" LOG_LEVEL: "DEBUG"
LOG_PATH: "./logs"
ACME_PATH: "./acme.json"
DASHBOARD_USER: ${DASHBOARD_USER} DASHBOARD_USER: ${DASHBOARD_USER}
DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD} DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD}
FIN_LOCATION: "/fin" FIN_LOCATION: "/fin"
@@ -9,9 +11,6 @@ x-environment: &default-environment
BAI_LOCATION: "/bai" BAI_LOCATION: "/bai"
STREAMLIT_BAI_SERVER_PORT: "8502" STREAMLIT_BAI_SERVER_PORT: "8502"
volumes:
production_traefik: {}
services: services:
osrm-backend: osrm-backend:
environment: environment:
@@ -28,7 +27,10 @@ services:
container_name: osrm_backend container_name: osrm_backend
restart: always restart: always
ports: ports:
- ${OSRM_PORT}:${OSRM_PORT} - ${OSRM_PORT:-5000}:${OSRM_PORT:-5000}
networks:
- net
- default
streamlit-bai: streamlit-bai:
environment: environment:
@@ -39,6 +41,9 @@ services:
expose: expose:
- ${STREAMLIT_BAI_SERVER_PORT} - ${STREAMLIT_BAI_SERVER_PORT}
command: streamlit run --server.port=$STREAMLIT_BAI_SERVER_PORT --server.address=0.0.0.0 --server.baseUrlPath=$BAI_LOCATION src/app.py command: streamlit run --server.port=$STREAMLIT_BAI_SERVER_PORT --server.address=0.0.0.0 --server.baseUrlPath=$BAI_LOCATION src/app.py
networks:
- net
- default
streamlit-fin: streamlit-fin:
environment: environment:
@@ -51,6 +56,9 @@ services:
restart: always restart: always
expose: expose:
- ${STREAMLIT_FIN_SERVER_PORT} - ${STREAMLIT_FIN_SERVER_PORT}
networks:
- net
- default
command: streamlit run --server.port=$STREAMLIT_FIN_SERVER_PORT --server.address=0.0.0.0 --server.baseUrlPath=$FIN_LOCATION src/app.py command: streamlit run --server.port=$STREAMLIT_FIN_SERVER_PORT --server.address=0.0.0.0 --server.baseUrlPath=$FIN_LOCATION src/app.py
traefik: traefik:
@@ -60,9 +68,20 @@ services:
context: . context: .
dockerfile: ./compose/traefik/Dockerfile dockerfile: ./compose/traefik/Dockerfile
image: traefik_production image: traefik_production
container_name: traefik
retart: always
volumes: volumes:
- production_traefik:/etc/traefik/acme:z - "${LOG_PATH:-./logs}:/logs"
- /var/run/docker.sock:/var/run/docker.sock:ro - "${ACME_PATH:-./acme.json}:/etc/traefik/acme/acme.json"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- net
- default
ports: ports:
- "0.0.0.0:80:80" - "80:80"
- "0.0.0.0:443:443" - "443:443"
networks:
net:
external: true
name: ${NETWORK:-web}