From a6117828ad4be000c965b009c52d945207f8f8c0 Mon Sep 17 00:00:00 2001 From: Saufi Date: Tue, 16 Jun 2026 20:14:28 +0800 Subject: [PATCH] permission git --- docker-compose.yml | 12 +++++++++++- docker/php-apache/entrypoint.sh | 12 ++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1fb16e5..1656879 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,10 @@ services: volumes: - ./src:/var/www/html - ./docker/php/custom.ini:/usr/local/etc/php/conf.d/99-custom.ini + # Storage & bootstrap/cache guna named volume supaya chown www-data + # (dalam entrypoint) tak menukar pemilikan fail git di host. + - storage_data:/var/www/html/storage + - bootstrap_cache:/var/www/html/bootstrap/cache environment: APACHE_DOCUMENT_ROOT: /var/www/html/public APP_ENV: local @@ -42,4 +46,10 @@ services: networks: backend_net: name: backend_net - external: true \ No newline at end of file + external: true + +volumes: + storage_data: + driver: local + bootstrap_cache: + driver: local \ No newline at end of file diff --git a/docker/php-apache/entrypoint.sh b/docker/php-apache/entrypoint.sh index 5ddd227..cc095ba 100644 --- a/docker/php-apache/entrypoint.sh +++ b/docker/php-apache/entrypoint.sh @@ -1,17 +1,25 @@ #!/usr/bin/env bash set -e -# Bind mount (./src:/var/www/html) menindih ownership dari image, jadi kita -# betulkan permission storage setiap kali container start — bukan masa build. +# storage/ & bootstrap/cache/ ialah named volume (lihat docker-compose.yml). +# Pada mount pertama ia kosong, jadi kita cipta struktur penuh Laravel dan +# betulkan permission setiap kali container start. Sebab ia named volume +# (bukan bind mount host), chown ini TIDAK menyentuh fail git di host. mkdir -p \ + storage/app/public \ + storage/framework/cache/data \ storage/framework/cache/laravel-excel \ storage/framework/sessions \ storage/framework/views \ + storage/framework/testing \ storage/logs \ bootstrap/cache chown -R www-data:www-data storage bootstrap/cache chmod -R 775 storage bootstrap/cache +# Pautan symbolic untuk fail awam (idempotent) +php artisan storage:link 2>/dev/null || true + # Jalankan arahan utama container (apache2-foreground) exec "$@"