Fix Coolify compose networking and local Docker override
This commit is contained in:
@@ -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.
|
||||
|
||||
16
docker-compose.override.yml
Normal file
16
docker-compose.override.yml
Normal 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:
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user