48 lines
1.5 KiB
Bash
48 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
# 환경변수 PUID가 설정되어 있으면 www-data 사용자의 UID를 변경
|
|
if [[ -n "${PUID}" ]]
|
|
then
|
|
usermod -u ${PUID} www-data
|
|
fi
|
|
|
|
# 환경변수 PGID가 설정되어 있으면 www-data 그룹의 GID를 변경
|
|
if [[ -n "${PGID}" ]]
|
|
then
|
|
groupmod -g ${PGID} www-data
|
|
fi
|
|
|
|
# 첫 번째 인자가 apache2* 또는 php-fpm이면
|
|
if [[ "$1" == apache2* ]] || [ "$1" = 'php-fpm' ]; then
|
|
uid="$(id -u)"
|
|
gid="$(id -g)"
|
|
# 현재 UID가 root이면
|
|
if [ "$uid" = '0' ]; then
|
|
case "$1" in
|
|
apache2*)
|
|
user="${APACHE_RUN_USER:-www-data}"
|
|
group="${APACHE_RUN_GROUP:-www-data}"
|
|
|
|
# Apache에서 '#1000' 형식 UID/GID에서 '#' 제거
|
|
pound='#'
|
|
user="${user#$pound}"
|
|
group="${group#$pound}"
|
|
;;
|
|
*)
|
|
# php-fpm인 경우 기본 사용자 www-data
|
|
user='www-data'
|
|
group='www-data'
|
|
;;
|
|
esac
|
|
else
|
|
# root이 아니면 현재 uid/gid 그대로 사용
|
|
user="$uid"
|
|
group="$gid"
|
|
fi
|
|
|
|
fi
|
|
|
|
# 마지막으로 인자로 받은 명령어 실행 (ex: apache2-foreground)
|
|
exec "$@"
|