API profil dosen UMY
375
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.
asyncio).msodbcsql17 / msodbcsql18 & unixodbc-dev di dalam container.production_user) untuk keamanan maksimal./health siap digunakan oleh Docker & Orchestrator (Kubernetes/Docker Swarm).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
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
Aplikasi mengonfigurasi koneksi database dan runtime melalui variabel lingkungan berikut:
| Variabel | Wajib | Contoh / Default | Deskripsi |
|---|---|---|---|
DATABASE_URL | Ya | mssql+aioodbc://sa:pass@host:1433/profil_dosen?driver=ODBC+Driver+18+for+SQL+Server | Connection string SQLAlchemy Async untuk MS SQL Server |
MSSQL_USER | Opsional | sa | Username akun MS SQL Server |
MSSQL_SA_PASSWORD | Opsional | DosenUmy2026! | Password akun SA MS SQL Server |
DB_NAME | Opsional | profil_dosen | Nama database utama |
APP_PORT | Opsional | 8000 | Port publik yang diekspos oleh container |
| Resource | URL / Port | Deskripsi |
|---|---|---|
| API Port | 8000 | Port default aplikasi |
| Swagger UI | http://localhost:8000/docs | Dokumentasi API Interaktif |
| ReDoc UI | http://localhost:8000/redoc | Dokumentasi API Alternatif |
| Health Check | http://localhost:8000/health | Endpoint status kesehatan container (200 OK) |
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./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 monitorprofile-dosen-umy-be)Content type
Image
Digest
sha256:9ae644230…
Size
207.2 MB
Last updated
about 2 months ago
docker pull workerbrian/be-api:v2.0.0