@@ -6,6 +6,10 @@ ENV DEBUG_ENABLED=$BUILD_ARGUMENT_DEBUG_ENABLED
66ARG BUILD_ARGUMENT_ENV=dev
77ENV ENV=$BUILD_ARGUMENT_ENV
88ENV APP_HOME /var/www/html
9+ ARG UID=1000
10+ ARG GID=1000
11+ ENV USERNAME=www-data
12+
913
1014# check environment
1115RUN if [ "$BUILD_ARGUMENT_ENV" = "default" ]; then echo "Set BUILD_ARGUMENT_ENV in docker build-args like --build-arg BUILD_ARGUMENT_ENV=dev" && exit 2; \
@@ -29,6 +33,7 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
2933 libreadline-dev \
3034 supervisor \
3135 cron \
36+ sudo \
3237 libzip-dev \
3338 && docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
3439 && docker-php-ext-configure intl \
@@ -43,11 +48,12 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
4348 && rm -rf /var/lib/apt/lists/* \
4449 && apt-get clean
4550
46- # create document root
47- RUN mkdir -p $APP_HOME/public
48-
49- # change owner
50- RUN chown -R www-data:www-data $APP_HOME
51+ # create document root, fix permissions for www-data user and change owner to www-data
52+ RUN mkdir -p $APP_HOME/public && \
53+ mkdir -p /home/$USERNAME && chown $USERNAME:$USERNAME /home/$USERNAME \
54+ && usermod -u $UID $USERNAME -d /home/$USERNAME \
55+ && groupmod -g $GID $USERNAME \
56+ && chown -R ${USERNAME}:${USERNAME} $APP_HOME
5157
5258# put php config for Laravel
5359COPY ./docker/$BUILD_ARGUMENT_ENV/www.conf /usr/local/etc/php-fpm.d/www.conf
@@ -66,20 +72,17 @@ ENV COMPOSER_ALLOW_SUPERUSER 1
6672# add supervisor
6773RUN mkdir -p /var/log/supervisor
6874COPY --chown=root:root ./docker/general/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
69- COPY --chown=root:root ./docker/general/cron /var/spool/cron/crontabs/root
75+ COPY --chown=root:crontab ./docker/general/cron /var/spool/cron/crontabs/root
7076RUN chmod 0600 /var/spool/cron/crontabs/root
7177
7278# set working directory
7379WORKDIR $APP_HOME
7480
75- # create composer folder for user www-data
76- RUN mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www/.composer
77-
78- USER www-data
81+ USER ${USERNAME}
7982
8083# copy source files and config file
81- COPY --chown=www-data:www-data . $APP_HOME/
82- COPY --chown=www-data:www-data .env.$ENV $APP_HOME/.env
84+ COPY --chown=${USERNAME}:${USERNAME} . $APP_HOME/
85+ COPY --chown=${USERNAME}:${USERNAME} .env.$ENV $APP_HOME/.env
8386
8487# install all PHP dependencies
8588RUN if [ "$BUILD_ARGUMENT_ENV" = "dev" ] || [ "$BUILD_ARGUMENT_ENV" = "test" ]; then COMPOSER_MEMORY_LIMIT=-1 composer install --optimize-autoloader --no-interaction --no-progress; \
0 commit comments