Merge pull request #41 from fossyy/staging

Staging
This commit is contained in:
2024-09-08 17:27:56 +07:00
committed by GitHub
3 changed files with 58 additions and 14 deletions

7
cache/cache.go vendored
View File

@ -2,6 +2,7 @@ package cache
import ( import (
"context" "context"
"fmt"
"github.com/fossyy/filekeeper/types" "github.com/fossyy/filekeeper/types"
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"time" "time"
@ -12,10 +13,10 @@ type RedisServer struct {
database types.Database database types.Database
} }
func NewRedisServer(db types.Database) types.CachingServer { func NewRedisServer(host, port, password string, db types.Database) types.CachingServer {
client := redis.NewClient(&redis.Options{ client := redis.NewClient(&redis.Options{
Addr: "localhost:6379", Addr: fmt.Sprintf("%s:%s", host, port),
Password: "Password123", Password: password,
DB: 0, DB: 0,
}) })
return &RedisServer{client: client, database: db} return &RedisServer{client: client, database: db}

View File

@ -1,13 +1,19 @@
version: '3.8' version: '3.8'
services: services:
mysql-filekeeper: postgres-server:
image: mysql:latest image: postgres:16.0
container_name: mysql-filekeeper container_name: postgres-filekeeper
environment: environment:
MYSQL_ROOT_PASSWORD: VerySecretPassword POSTGRES_PASSWORD: VerySecretPassword
volumes: volumes:
- /opt/mysql:/var/lib/mysql - postgres:/var/lib/postgresql/data
networks:
- filekeeper
redis:
image: redis:7.4.0
container_name: redis-filekeeper
networks: networks:
- filekeeper - filekeeper
@ -21,9 +27,9 @@ services:
CORS_PROTO: https CORS_PROTO: https
CORS_LIST: filekeeper.fossy.my.id:443,fossy.my.id:443 CORS_LIST: filekeeper.fossy.my.id:443,fossy.my.id:443
CORS_METHODS: POST,GET CORS_METHODS: POST,GET
DB_HOST: mysql-filekeeper DB_HOST: postgres-filekeeper
DB_PORT: 3306 DB_PORT: 5432
DB_USERNAME: root DB_USERNAME: postgres
DB_PASSWORD: VerySecretPassword DB_PASSWORD: VerySecretPassword
DB_NAME: filekeeper DB_NAME: filekeeper
SMTP_HOST: mail.example.com SMTP_HOST: mail.example.com
@ -32,15 +38,49 @@ services:
SMTP_PASSWORD: VerySecretPassword SMTP_PASSWORD: VerySecretPassword
SESSION_NAME: Session SESSION_NAME: Session
SESSION_MAX_AGE: 604800 SESSION_MAX_AGE: 604800
REDIS_HOST: redis-filekeeper
REDIS_PORT: 6379
REDIS_PASSWORD: VerySecretPassword
volumes: volumes:
- /opt/filekeeper/uploads:/src/uploads - /opt/filekeeper/uploads:/src/uploads
networks: networks:
- filekeeper - filekeeper
- traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.filekeeper.rule=Host(`filekeeper-staging.com`)"
- "traefik.http.services.filekeeper.loadbalancer.server.port=8000"
depends_on: depends_on:
- mysql-filekeeper - postgres-server
- redis
restart: on-failure restart: on-failure
traefik:
image: traefik:v2.8
container_name: traefik
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.le.acme.tlschallenge=true"
- "--certificatesresolvers.le.acme.email=your-email@example.com"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
ports: ports:
- "8000:8000" - "80:80"
- "443:443"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./letsencrypt:/letsencrypt"
networks:
- filekeeper
- traefik
networks: networks:
filekeeper: filekeeper:
traefik:
volumes:
postgres:
letsencrypt:

View File

@ -24,9 +24,12 @@ func main() {
dbHost := utils.Getenv("DB_HOST") dbHost := utils.Getenv("DB_HOST")
dbPort := utils.Getenv("DB_PORT") dbPort := utils.Getenv("DB_PORT")
dbName := utils.Getenv("DB_NAME") dbName := utils.Getenv("DB_NAME")
redisHost := utils.Getenv("REDIS_HOST")
redisPort := utils.Getenv("REDIS_PORT")
redisPassword := utils.Getenv("REDIS_PASSWORD")
database := db.NewPostgresDB(dbUser, dbPass, dbHost, dbPort, dbName, db.DisableSSL) database := db.NewPostgresDB(dbUser, dbPass, dbHost, dbPort, dbName, db.DisableSSL)
cacheServer := cache.NewRedisServer(database) cacheServer := cache.NewRedisServer(redisHost, redisPort, redisPassword, database)
services := service.NewService(database, cacheServer) services := service.NewService(database, cacheServer)
smtpPort, _ := strconv.Atoi(utils.Getenv("SMTP_PORT")) smtpPort, _ := strconv.Atoi(utils.Getenv("SMTP_PORT"))