Prodify Docker Compose Project
Ikhtisar
Prodify adalah infrastruktur produksi lokal yang disiapkan menggunakan Docker Compose. Ini mencakup berbagai layanan penting seperti PostgreSQL, MongoDB, Minio, Camunda, Redis, dan Mailpit. Layanan ini dikonfigurasi dengan volume yang dipetakan ke folder penyimpanan proyek untuk data yang persisten.
Prasyarat
- Docker
- Docker Compose
Memulai
Clone Repository
git clone https://github.com/ramaid/prodify.git
cd prodifyVariabel Lingkungan (Optional)
Sebelum melakukan step ini, pastikan kalian paham dulu terkait infrastructure, ya! Kalau tidak, gunakan konfigurasi default saja.
Buat file .env di direktori root proyek dan konfigurasikan variabel lingkungan berikut sesuai kebutuhan:
# PostgreSQL PGPASSWORD=secreted DB_USER=user DB_PASSWORD=secret DB_NAME=camunda DB_PORT=5432 # MongoDB MONGO_PORT=27017 # Minio MINIO_USER=minioadmin MINIO_PASSWORD=minioadmin MINIO_PORT=9000 MINIO_CONSOLE_PORT=8900 # Camunda CAMUNDA_PORT=8080 # Matomo MATOMO_PORT=8081 # Mailpit MAIL_SERVER_PORT=1025 MAIL_ADMIN_PORT=8025 # Metabase METABASE_PORT=3000
Mulai Layanan
Setup Camunda
Buka halaman Camunda (default: localhost:8080) dan konfigurasikan Camunda menggunakan pengaturan berikut:
- User Account:
admin/adminatau value lainnya - User Profile:
Admin/Adminatau value lainnya
Deploy BPMN
- Buka berkas BPMN di aplikasi Camunda Modeler
- Sesuaikan versinya jika belum sesuai
- Deploy BPMN ke Camunda Engine (default:
http://localhost:8080/engine-rest)
Layanan dan Konfigurasi
PostgreSQL
- Image: postgres:latest
- Port: 5432 (dapat dikonfigurasi)
- Volume:
./storage/postgres_data:/var/lib/postgresql/data- Skrip SQL di direktori
./pgsql/untuk inisialisasi database
- Healthcheck: Memastikan layanan PostgreSQL siap sebelum layanan yang bergantung memulai.
MongoDB
- Image: mongo:latest
- Port: 27017 (dapat dikonfigurasi)
- Volume:
./storage/mongo_data:/data/db
Minio
- Image: minio/minio:latest
- Port: 9000 (dapat dikonfigurasi), 8900 (console port, dapat dikonfigurasi)
- Perintah:
minio server /data/minio --console-address ":8900" - Volume:
./storage/minio_data:/data
RustFS (Alternatif MinIO)
- Image: rustfs/rustfs:latest
- Port:
- 9002 (S3 API, dapat dikonfigurasi)
- 9003 (Console, dapat dikonfigurasi)
- Volume:
./storage/rustfs_data:/data - Lingkungan:
RUSTFS_ADDRESS: Alamat listening server (default: :9002)RUSTFS_CONSOLE_ADDRESS: Alamat console server (default: :9003)RUSTFS_ACCESS_KEY: Access key untuk autentikasi (default: rustfsadmin)RUSTFS_SECRET_KEY: Secret key untuk autentikasi (default: rustfsadmin)RUSTFS_CONSOLE_ENABLE: Aktifkan console web (default: true)RUSTFS_SERVER_DOMAINS: Domain server (default: localhost)
RustFS adalah sistem penyimpanan objek terdistribusi yang 100% kompatibel dengan S3, ditulis dalam Rust. Ini merupakan alternatif berkinerja tinggi untuk MinIO dengan dukungan penuh S3 API.
⚠️ Catatan Keamanan: Kredensial default hanya untuk development. Untuk production, pastikan mengganti access key dan secret key dengan nilai yang kuat dan unik di file
.env.
Camunda
- Image: camunda/camunda-bpm-platform:7.21.0
- Port: 8080 (dapat dikonfigurasi)
- Bergantung pada: Layanan PostgreSQL
- Lingkungan:
DB_DRIVER: org.postgresql.DriverDB_URL: jdbc:postgresql://pgsql:5432/camundaDB_USERNAME: ${DB_USER}DB_PASSWORD: ${DB_PASSWORD}
- Volume:
camunda:/camunda./storage/camunda_data:/camunda/webapps/camunda-invoice
Matomo
- Image: matomo:latest
- Port: 8081 (dapat dikonfigurasi)
- Lingkungan:
MATOMO_DATABASE_HOST: pgsqlMATOMO_DATABASE_ADAPTER: pgsqlMATOMO_DATABASE_USERNAME: ${DB_USER}MATOMO_DATABASE_PASSWORD: ${DB_PASSWORD}MATOMO_DATABASE_DBNAME: matomo
- Volume:
./storage/matomo_data:/var/www/html:z
Redis
- Image: redis:latest
- Port: 6379
- Volume:
./storage/redis_data:/data
Mailpit
- Image: axllent/mailpit:latest
- Port: 1025 (dapat dikonfigurasi), 8025 (dapat dikonfigurasi)
- Port Tambahan: ${MAIL_SERVER_PORT}, ${MAIL_ADMIN_PORT}
Metabase
- Image: metabase/metabase:latest
- Port: 3000 (dapat dikonfigurasi)
- Port Tambahan: ${METABASE_PORT}
Volume
camunda: Volume lokal untuk data Camunda.
Menghentikan Layanan
Untuk menghentikan dan menghapus semua container yang berjalan:
Mengakses Layanan (Default)
- PostgreSQL:
localhost:5432 - MongoDB:
localhost:27017 - Minio Console:
localhost:8900 - RustFS S3 API:
localhost:9002 - RustFS Console:
localhost:9003 - Camunda:
localhost:8080 - Matomo:
localhost:8081 - Redis:
localhost:6379 - Mailpit Admin:
localhost:8025 - Mailpit SMTP:
localhost:1025 - Metabase:
localhost:3000
Persistensi Data
Data untuk setiap layanan disimpan di direktori ./storage untuk memastikan persistensi di antara restart container.
Lisensi
Proyek ini dilisensikan di bawah Lisensi MIT.
Kontribusi
Kontribusi sangat diterima! Silakan buka issue atau kirim pull request.
Kontak
Untuk pertanyaan atau pertanyaan lebih lanjut, silakan hubungi Rama di rama@javan.co.id.