diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..ebef0a4 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,31 @@ +name: Deploy Project-CL + +on: + push: + branches: + - main + +jobs: + deploy: + name: Build and Deploy + runs-on: self-hosted + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Create env + run: | + echo "${{ secrets.DB_HOST }}" > .env + + - name: Restart docker + run: | + echo "Restarting docker" + docker compose down + docker compose up -d --build + echo "Docker restarted" + + - name: Clean up + run: | + echo "Cleaning up" + docker image prune -f \ No newline at end of file diff --git a/.gitignore b/.gitignore index 451fb35..42bb985 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -.env -.idea \ No newline at end of file +.env* +.idea +docker-compose.override.yml \ No newline at end of file diff --git a/Backend/Dockerfile b/Backend/Dockerfile index 47a25bc..d78ae76 100644 --- a/Backend/Dockerfile +++ b/Backend/Dockerfile @@ -19,8 +19,6 @@ WORKDIR /app # Ambil hasil build dari Tahap 1 COPY --from=builder /app/server . -# Copy file .env juga (PENTING biar connect DB) -COPY .env . # Buka Port 8080 (Sesuaikan kalau main.go kamu pakai port lain) EXPOSE 8080 diff --git a/Backend/database/db.go b/Backend/database/db.go index b30cc73..ffa535e 100644 --- a/Backend/database/db.go +++ b/Backend/database/db.go @@ -15,14 +15,20 @@ var DB *gorm.DB func ConnectDB() { err := godotenv.Load() if err != nil { - log.Fatal("Error loading .env file") + err = godotenv.Load("../.env") } - dbHost := "db" + if err != nil { + fmt.Println("⚠️ Warning: No .env file found. Relying on System/Docker Environment Variables.") + } else { + fmt.Println("✅ Success loading .env file") + } + + dbHost := os.Getenv("DB_HOST") dbUser := os.Getenv("DB_USER") dbPass := os.Getenv("DB_PASSWORD") dbName := os.Getenv("DB_NAME") - dbPort := "5432" + dbPort := os.Getenv("DB_PORT") dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", dbHost, dbUser, dbPass, dbName, dbPort) diff --git a/Frontend/project-CL/src/services/api.tsx b/Frontend/project-CL/src/services/api.tsx index fa14ff7..63629aa 100644 --- a/Frontend/project-CL/src/services/api.tsx +++ b/Frontend/project-CL/src/services/api.tsx @@ -1,7 +1,8 @@ import axios from "axios"; const api = axios.create({ - baseURL: "http://100.111.195.90:8080/api", + baseURL: import.meta.env.VITE_API_BASE_URL, + withCredentials: true, timeout: 5000, headers: { "Content-Type": "application/json", diff --git a/docker-compose.yml b/docker-compose.yml index 24bd9c7..05d6cf5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,15 +22,10 @@ services: restart: always ports: - "8080:8080" + env_file: + - .env depends_on: - db - environment: - # PENTING: Koneksi ke DB pakai nama service 'db', bukan localhost - DB_HOST: db - DB_USER: ${DB_USER} - DB_PASSWORD: ${DB_PASSWORD} - DB_NAME: ${DB_NAME} - DB_PORT: 5432 networks: - erp_network