diff --git a/docker/compose.yml b/docker/compose.yml index e037e3d..9bded0c 100644 --- a/docker/compose.yml +++ b/docker/compose.yml @@ -40,6 +40,8 @@ services: POSTGRES_USER: ${POSTGRES_USER:-dumpster} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-dumpster} POSTGRES_DB: ${POSTGRES_DB:-dumpster} + ports: + - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: @@ -51,6 +53,8 @@ services: valkey: image: valkey/valkey:8 container_name: dumpster-valkey + ports: + - "6379:6379" volumes: - valkey_data:/data healthcheck: @@ -66,6 +70,9 @@ services: environment: MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:-dumpster} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:-dumpster-secret} + ports: + - "9000:9000" + - "9001:9001" volumes: - minio_data:/data diff --git a/internal/config/config.go b/internal/config/config.go index 0edc05f..28c21c3 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,12 +1,46 @@ package config import ( + "bufio" "os" "strconv" "strings" "time" ) +func init() { + loadDotEnv() +} + +func loadDotEnv() { + file, err := os.Open(".env") + if err != nil { + return + } + defer file.Close() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + parts := strings.SplitN(line, "=", 2) + if len(parts) != 2 { + continue + } + key := strings.TrimSpace(parts[0]) + val := strings.TrimSpace(parts[1]) + if (strings.HasPrefix(val, "\"") && strings.HasSuffix(val, "\"")) || + (strings.HasPrefix(val, "'") && strings.HasSuffix(val, "'")) { + val = val[1 : len(val)-1] + } + if os.Getenv(key) == "" { + os.Setenv(key, val) + } + } +} + type Config struct { Host string Port string