@@ -6,6 +6,9 @@ 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
912
1013# check environment
1114RUN 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,7 +32,9 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
2932 libreadline-dev \
3033 supervisor \
3134 cron \
35+ sudo \
3236 libzip-dev \
37+ wget \
3338 librabbitmq-dev \
3439 && pecl install amqp \
3540 && docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
@@ -50,12 +55,12 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
5055RUN a2dissite 000-default.conf
5156RUN rm -r $APP_HOME
5257
53- # create document root
54- RUN mkdir -p $APP_HOME/public
55-
56- # change uid and gid of apache to docker user uid/gid
57- RUN usermod -u 1000 www-data && groupmod -g 1000 www-data
58- RUN chown -R www-data:www-data $APP_HOME
58+ # create document root, fix permissions for www-data user and change owner to www-data
59+ RUN mkdir -p $APP_HOME/public && \
60+ mkdir -p /home/$USERNAME && chown $USERNAME:$USERNAME /home/$USERNAME \
61+ && usermod -u $UID $USERNAME -d /home/$USERNAME \
62+ && groupmod -g $GID $USERNAME \
63+ && chown -R ${USERNAME}:${USERNAME} $APP_HOME
5964
6065# put apache and php config for Symfony, enable sites
6166COPY ./docker/general/symfony.conf /etc/apache2/sites-available/symfony.conf
@@ -67,11 +72,15 @@ COPY ./docker/$BUILD_ARGUMENT_ENV/php.ini /usr/local/etc/php/php.ini
6772RUN a2enmod rewrite
6873RUN a2enmod ssl
6974
70- # install Xdebug in case development or test environment
75+ # install Xdebug in case dev/ test environment
7176COPY ./docker/general/do_we_need_xdebug.sh /tmp/
7277COPY ./docker/dev/xdebug.ini /tmp/
7378RUN chmod u+x /tmp/do_we_need_xdebug.sh && /tmp/do_we_need_xdebug.sh
7479
80+ # install security-checker in case dev/test environment
81+ COPY ./docker/general/do_we_need_security-checker.sh /tmp/
82+ RUN chmod u+x /tmp/do_we_need_security-checker.sh && /tmp/do_we_need_security-checker.sh
83+
7584# install composer
7685COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
7786RUN chmod +x /usr/bin/composer
@@ -80,7 +89,7 @@ ENV COMPOSER_ALLOW_SUPERUSER 1
8089# add supervisor
8190RUN mkdir -p /var/log/supervisor
8291COPY --chown=root:root ./docker/general/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
83- COPY --chown=root:root ./docker/general/cron /var/spool/cron/crontabs/root
92+ COPY --chown=root:crontab ./docker/general/cron /var/spool/cron/crontabs/root
8493RUN chmod 0600 /var/spool/cron/crontabs/root
8594
8695# generate certificates
@@ -90,13 +99,10 @@ RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private
9099# set working directory
91100WORKDIR $APP_HOME
92101
93- # create composer folder for user www-data
94- RUN mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www/.composer
95-
96- USER www-data
102+ USER ${USERNAME}
97103
98104# copy source files
99- COPY --chown=www-data:www-data . $APP_HOME/
105+ COPY --chown=${USERNAME}:${USERNAME} . $APP_HOME/
100106
101107# install all PHP dependencies
102108RUN 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