133 lines
2.7 KiB
Markdown
133 lines
2.7 KiB
Markdown
# Langkah Belajar Docker
|
|
|
|
File Docker sudah disiapkan, tetapi belum dijalankan.
|
|
|
|
## File yang Dibuat
|
|
|
|
```text
|
|
Dockerfile
|
|
docker-compose.yml
|
|
docker-compose.local.yml
|
|
.env.example
|
|
.dockerignore
|
|
docker/mysql-init/99-grants.sql
|
|
```
|
|
|
|
## Fungsi Setiap File
|
|
|
|
`Dockerfile`
|
|
|
|
Membuat image aplikasi PHP Apache. File ini memasang extension PHP yang dibutuhkan project, seperti `pdo_mysql`, `mysqli`, dan `curl`.
|
|
|
|
`docker-compose.yml`
|
|
|
|
Mengatur dua service untuk deploy:
|
|
|
|
```text
|
|
app = Apache + PHP + semua file project
|
|
db = MySQL 8.0
|
|
```
|
|
|
|
File ini tidak membuka port host secara langsung supaya aman dipakai di server/Coolify dan tidak bentrok dengan aplikasi lain.
|
|
|
|
`docker-compose.local.yml`
|
|
|
|
File tambahan khusus saat menjalankan di laptop. File ini membuka:
|
|
|
|
```text
|
|
APP_PORT=8080 -> app port 80
|
|
DB_PORT=3307 -> db port 3306
|
|
```
|
|
|
|
`.env.example`
|
|
|
|
Template konfigurasi port, username, password, dan nama database. File ini boleh masuk Git karena tidak berisi password production.
|
|
|
|
`.dockerignore`
|
|
|
|
Mengatur file/folder yang tidak perlu ikut masuk image Docker, seperti `.git`, `.env`, upload, log, `vendor`, dan `node_modules`.
|
|
|
|
`docker/mysql-init/99-grants.sql`
|
|
|
|
Memberi akses user `webgis_user` ke dua database:
|
|
|
|
```text
|
|
webgis_spbu
|
|
webgis_miskin
|
|
```
|
|
|
|
## Urutan Menjalankan Nanti
|
|
|
|
Jangan jalankan dulu kalau masih belajar struktur. Saat sudah siap, urutannya:
|
|
|
|
1. Salin file environment:
|
|
|
|
```bash
|
|
copy .env.example .env
|
|
```
|
|
|
|
2. Buka `.env`, lalu pelajari nilai berikut:
|
|
|
|
```text
|
|
APP_PORT=8080
|
|
DB_PORT=3307
|
|
DB_USERNAME=webgis_user
|
|
DB_PASSWORD=webgis_password
|
|
MYSQL_ROOT_PASSWORD=root_password
|
|
```
|
|
|
|
3. Build dan jalankan container:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --build
|
|
```
|
|
|
|
4. Buka aplikasi:
|
|
|
|
```text
|
|
http://localhost:8080
|
|
```
|
|
|
|
5. Cek container:
|
|
|
|
```bash
|
|
docker compose ps
|
|
```
|
|
|
|
atau jika ingin melihat compose lokal:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.yml -f docker-compose.local.yml ps
|
|
```
|
|
|
|
6. Lihat log jika ada error:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.yml -f docker-compose.local.yml logs -f
|
|
```
|
|
|
|
7. Matikan container:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.yml -f docker-compose.local.yml down
|
|
```
|
|
|
|
8. Reset database Docker dari awal:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.yml -f docker-compose.local.yml down -v
|
|
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --build
|
|
```
|
|
|
|
## Catatan Penting
|
|
|
|
Kalau kamu mengubah `DB_USERNAME` di `.env`, sesuaikan juga isi:
|
|
|
|
```text
|
|
docker/mysql-init/99-grants.sql
|
|
```
|
|
|
|
Untuk production, ganti semua password default di `.env`.
|
|
|
|
Saat deploy di Coolify, cukup gunakan `docker-compose.yml`. Jangan publish port `8080` dari compose utama karena port itu bisa sudah dipakai aplikasi lain di server.
|