@@ -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 \
@@ -47,12 +52,12 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
4752RUN a2dissite 000-default.conf
4853RUN rm -r $APP_HOME
4954
50- # create document root
51- RUN mkdir -p $APP_HOME/public
52-
53- # change uid and gid of apache to docker user uid/gid
54- RUN usermod -u 1000 www-data && groupmod -g 1000 www-data
55- RUN chown -R www-data:www-data $APP_HOME
55+ # create document root, fix permissions for www-data user and change owner to www-data
56+ RUN mkdir -p $APP_HOME/public && \
57+ mkdir -p /home/$USERNAME && chown $USERNAME:$USERNAME /home/$USERNAME \
58+ && usermod -u $UID $USERNAME -d /home/$USERNAME \
59+ && groupmod -g $GID $USERNAME \
60+ && chown -R ${USERNAME}:${USERNAME} $APP_HOME
5661
5762# put apache and php config for Laravel, enable sites
5863COPY ./docker/general/laravel.conf /etc/apache2/sites-available/laravel.conf
@@ -77,7 +82,7 @@ ENV COMPOSER_ALLOW_SUPERUSER 1
7782# add supervisor
7883RUN mkdir -p /var/log/supervisor
7984COPY --chown=root:root ./docker/general/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
80- COPY --chown=root:root ./docker/general/cron /var/spool/cron/crontabs/root
85+ COPY --chown=root:crontab ./docker/general/cron /var/spool/cron/crontabs/root
8186RUN chmod 0600 /var/spool/cron/crontabs/root
8287
8388# generate certificates
@@ -87,14 +92,11 @@ RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private
8792# set working directory
8893WORKDIR $APP_HOME
8994
90- # create composer folder for user www-data
91- RUN mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www/.composer
92-
93- USER www-data
95+ USER ${USERNAME}
9496
9597# copy source files and config file
96- COPY --chown=www-data:www-data . $APP_HOME/
97- COPY --chown=www-data:www-data .env.$ENV $APP_HOME/.env
98+ COPY --chown=${USERNAME}:${USERNAME} . $APP_HOME/
99+ COPY --chown=${USERNAME}:${USERNAME} .env.$ENV $APP_HOME/.env
98100
99101# install all PHP dependencies
100102RUN 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