fix: ensure shared .env is readable by PHP before config:cache

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
gouki
2026-07-18 15:14:18 +08:00
co-authored by Cursor
parent c726bfdbd7
commit b5979462f0
+6 -4
View File
@@ -110,6 +110,11 @@ run chmod -R g+rwX "$host_release"
run ln -s ../../shared/.env "$host_release/.env" run ln -s ../../shared/.env "$host_release/.env"
run ln -s ../../shared/storage "$host_release/storage" run ln -s ../../shared/storage "$host_release/storage"
# PHP runs as uid/gid 1000 inside the container. act_runner often owns
# shared/.env as 0600, which makes env() empty and config:cache write NULLs.
run chgrp "$php_group" "$DEPLOY_ROOT/shared/.env"
run chmod 640 "$DEPLOY_ROOT/shared/.env"
run docker exec --user "$php_user" --workdir "$container_release" \ run docker exec --user "$php_user" --workdir "$container_release" \
"$PHP_CONTAINER" composer install \ "$PHP_CONTAINER" composer install \
--no-dev --no-interaction --prefer-dist --optimize-autoloader --no-dev --no-interaction --prefer-dist --optimize-autoloader
@@ -152,12 +157,9 @@ if test "$dry_run" != "true"; then
if test "${#old_releases[@]}" -gt 0; then if test "${#old_releases[@]}" -gt 0; then
for old_release in "${old_releases[@]}"; do for old_release in "${old_releases[@]}"; do
release_name="$(basename "$old_release")" release_name="$(basename "$old_release")"
# Prefer container-side delete so root-owned vendor trees are removable. # Delete via the PHP container as root so vendor trees are removable.
run docker exec "$PHP_CONTAINER" \ run docker exec "$PHP_CONTAINER" \
rm -rf "$CONTAINER_DEPLOY_ROOT/releases/$release_name" rm -rf "$CONTAINER_DEPLOY_ROOT/releases/$release_name"
if test -e "$old_release"; then
run rm -rf -- "$old_release"
fi
done done
fi fi
fi fi