Sign inSign up

workerbrian/be-api

By workerbrian

Updated about 2 months ago

API profil dosen UMY

Image
Languages & frameworks
API management
Databases & storage
1

375

workerbrian/be-api repository overview

🐳 API Rekam Jejak Akademis Dosen UMY - Container Image

Python FastAPI Docker SQL Server

Image Docker resmi untuk backend API Rekam Jejak Akademis Dosen Universitas Muhammadiyah Yogyakarta (UMY). Service backend ini dibangun menggunakan FastAPI (Python 3.12) dan terhubung ke Microsoft SQL Server menggunakan driver SQLAlchemy (Async) & ODBC Driver.


📌 Fitur Utama

  • FastAPI Framework: Performa tinggi dengan asynchronous I/O (asyncio).
  • ODBC Driver Pre-installed: Sudah terinstal msodbcsql17 / msodbcsql18 & unixodbc-dev di dalam container.
  • Production-Ready Multi-Stage Build: Ukuran image dioptimalkan dan dijalankan dengan pengguna non-root (production_user) untuk keamanan maksimal.
  • Built-in Health Check: Endpoint /health siap digunakan oleh Docker & Orchestrator (Kubernetes/Docker Swarm).

🚀 Cara Penggunaan Cepat (Quick Start)

1. Multi-Container Deployment dengan Docker Compose (Rekomendasi)

Gunakan file docker-compose.yml di bawah ini untuk menjalankan API beserta database Microsoft SQL Server 2022 dan skrip inisialisasi database otomatis:

version: '3.8'

services:
  api:
    image: workerbrian/be-api:v2.0.0
    container_name: fastapi_backend_prod
    restart: unless-stopped
    ports:
      - "8000:8000"
    environment:
      - MSSQL_USER=sa
      - MSSQL_SA_PASSWORD=DosenUmy2026!
      - DB_NAME=profil_dosen
      - DATABASE_URL=mssql+aioodbc://sa:DosenUmy2026!@db:1433/profil_dosen?driver=ODBC+Driver+17+for+SQL+Server&TrustServerCertificate=yes
    depends_on:
      db:
        condition: service_started
      db-init:
        condition: service_completed_successfully
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 15s

  db:
    image: mcr.microsoft.com/mssql/server:2022-latest
    container_name: sql_server_prod
    restart: unless-stopped
    ports:
      - "1433:1433"
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_SA_PASSWORD=DosenUmy2026!
    volumes:
      - mssql_data:/var/opt/mssql

  db-init:
    image: mcr.microsoft.com/mssql/server:2022-latest
    container_name: sql_server_init_prod
    depends_on:
      - db
    volumes:
      - ./init.sql:/app/init.sql
    environment:
      - DB_PASS=DosenUmy2026!
      - DB_NAME=profil_dosen
    command: >
      /bin/bash -c "
      echo 'Menunggu SQL Server siap...';
      until /opt/mssql-tools18/bin/sqlcmd -S db -U sa -P \"$$DB_PASS\" -C -Q 'SELECT 1' > /dev/null 2>&1; do
        sleep 2;
      done;
      echo 'SQL Server menyala. Membuat database '$$DB_NAME'...';
      /opt/mssql-tools18/bin/sqlcmd -S db -U sa -P \"$$DB_PASS\" -C -Q \"IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = '$$DB_NAME') CREATE DATABASE [$$DB_NAME]\";
      echo 'Mengeksekusi skrip init.sql...';
      /opt/mssql-tools18/bin/sqlcmd -S db -U sa -P \"$$DB_PASS\" -d \"$$DB_NAME\" -C -i /app/init.sql;
      echo 'Inisialisasi database selesai!';
      "

volumes:
  mssql_data:

Jalankan service:

docker compose up -d

2. Standalone Container (docker run)

Jika Anda sudah memiliki server MS SQL Server yang berjalan:

docker run -d \
  --name profile_dosen_api \
  -p 8000:8000 \
  -e DATABASE_URL="mssql+aioodbc://sa:YourPassword@your-db-host:1433/profil_dosen?driver=ODBC+Driver+18+for+SQL+Server&TrustServerCertificate=yes&Encrypt=no" \
  workerbrian/be-api:v2.0.0

⚙️ Variabel Lingkungan (Environment Variables)

Aplikasi mengonfigurasi koneksi database dan runtime melalui variabel lingkungan berikut:

VariabelWajibContoh / DefaultDeskripsi
DATABASE_URLYamssql+aioodbc://sa:pass@host:1433/profil_dosen?driver=ODBC+Driver+18+for+SQL+ServerConnection string SQLAlchemy Async untuk MS SQL Server
MSSQL_USEROpsionalsaUsername akun MS SQL Server
MSSQL_SA_PASSWORDOpsionalDosenUmy2026!Password akun SA MS SQL Server
DB_NAMEOpsionalprofil_dosenNama database utama
APP_PORTOpsional8000Port publik yang diekspos oleh container

🔌 Port & Endpoints

ResourceURL / PortDeskripsi
API Port8000Port default aplikasi
Swagger UIhttp://localhost:8000/docsDokumentasi API Interaktif
ReDoc UIhttp://localhost:8000/redocDokumentasi API Alternatif
Health Checkhttp://localhost:8000/healthEndpoint status kesehatan container (200 OK)

🏷️ Docker Image Tags

  • latest / v2.0.0: Multi-stage build production image berbasis python:3.12.5-slim dengan Uvicorn worker pool.
  • v1.0.0 / dev: Image development dengan live reload enabled.

🔗 Endpoint Router Utama

  • /dosen - Pengelolaan & pencarian profil dosen
  • /haki - Rekam jejak Hak Atas Kekayaan Intelektual
  • /publikasi - Data publikasi ilmiah & jurnal
  • /keahlian - Kepakaran & bidang keahlian dosen
  • /tentang - Informasi profil singkat
  • /health - Service health monitor

👥 Repositori & Kontribusi

  • Repository: Internal UMY GitLab (profile-dosen-umy-be)
  • Developer: Tim LSI / Fakultas Teknik UMY

Tag summary

Content type

Image

Digest

sha256:9ae644230

Size

207.2 MB

Last updated

about 2 months ago

docker pull workerbrian/be-api:v2.0.0