Fix Coolify compose networking and local Docker override

This commit is contained in:
Power BI Dev
2026-05-02 10:32:46 +07:00
parent 1eddcea89f
commit 1ceaad7d94
3 changed files with 33 additions and 10 deletions

View File

@@ -1,6 +1,9 @@
# SPOTA Docker
Setup ini menjalankan aplikasi legacy SPOTA dengan PHP 7.4 Apache dan MySQL 8 dalam satu `docker-compose.yml`.
Setup ini menjalankan aplikasi legacy SPOTA dengan PHP Apache dan MySQL 8 dalam satu `docker-compose.yml`.
`docker-compose.yml` dibuat aman untuk Coolify: app tidak bind host port secara langsung dan hanya expose port internal `80`.
Untuk pemakaian lokal, Docker otomatis membaca `docker-compose.override.yml` yang menambahkan port host dan bind mount lokal.
## Jalankan Lokal
@@ -51,6 +54,9 @@ Folder berikut di-mount dari host supaya data upload tidak masuk image:
- `./files:/var/www/html/files`
- `./img:/var/www/html/img`
Bind mount tersebut hanya aktif untuk local development melalui `docker-compose.override.yml`.
Di Coolify, compose utama memakai named volume agar tidak bentrok dengan host port/path handling Coolify.
Opsional, upload berkas bisa dipindah ke lokasi di luar folder project dengan environment variable:
- `FILES_STORAGE_PATH=/absolute/path/to/files`
@@ -72,3 +78,4 @@ Sesuaikan environment berikut di Coolify:
- `PHP_DISPLAY_ERRORS=0` untuk production
Port internal app adalah `80`. Database internal memakai service name `db` pada port `3306`.
Jangan publish `8080:80` di compose utama untuk Coolify, karena Coolify akan mengurus routing sendiri dan bind host port bisa bentrok dengan resource lain.

View File

@@ -0,0 +1,16 @@
services:
app:
ports:
- "${APP_PORT:-8080}:80"
volumes:
- ./files:/var/www/html/files
- ./img:/var/www/html/img
db:
ports:
- "${DB_PORT:-3307}:3306"
volumes:
- db_data_local:/var/lib/mysql
volumes:
db_data_local:

View File

@@ -3,10 +3,10 @@ services:
build: .
container_name: spota-app
restart: unless-stopped
ports:
- "${APP_PORT:-8080}:80"
expose:
- "80"
environment:
APP_URL: ${APP_URL:-http://localhost:8080}
APP_URL: ${APP_URL:-http://localhost}
DB_HOST: ${DB_HOST:-db}
DB_USER: ${DB_USER:-spota_user}
DB_PASSWORD: ${DB_PASSWORD:-spota_password}
@@ -19,8 +19,8 @@ services:
PHP_DISPLAY_ERRORS: ${PHP_DISPLAY_ERRORS:-1}
FILES_STORAGE_PATH: ${FILES_STORAGE_PATH:-/var/www/html/files}
volumes:
- ./files:/var/www/html/files
- ./img:/var/www/html/img
- spota_files:/var/www/html/files
- spota_img:/var/www/html/img
depends_on:
db:
condition: service_healthy
@@ -35,10 +35,8 @@ services:
MYSQL_USER: ${DB_USER:-spota_user}
MYSQL_PASSWORD: ${DB_PASSWORD:-spota_password}
MYSQL_DATABASE: ${DB_NAME:-spota_spotadb}
ports:
- "${DB_PORT:-3307}:3306"
volumes:
- db_data:/var/lib/mysql
- spota_db_data:/var/lib/mysql
- ./docker/mysql-init:/docker-entrypoint-initdb.d:ro
- ./spota_db:/spota_db:ro
healthcheck:
@@ -48,4 +46,6 @@ services:
retries: 20
volumes:
db_data:
spota_db_data:
spota_files:
spota_img: