@@ -6,6 +6,9 @@ ENV DEBUG_ENABLED=$BUILD_ARGUMENT_DEBUG_ENABLED
6
6
ARG BUILD_ARGUMENT_ENV=dev
7
7
ENV ENV=$BUILD_ARGUMENT_ENV
8
8
ENV APP_HOME /var/www/html
9
+ ARG UID=1000
10
+ ARG GID=1000
11
+ ENV USERNAME=www-data
9
12
10
13
# check environment
11
14
RUN 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 \
29
32
libreadline-dev \
30
33
supervisor \
31
34
cron \
35
+ sudo \
32
36
libzip-dev \
37
+ wget \
33
38
librabbitmq-dev \
34
39
&& pecl install amqp \
35
40
&& 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 \
50
55
RUN a2dissite 000-default.conf
51
56
RUN rm -r $APP_HOME
52
57
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
59
64
60
65
# put apache and php config for Symfony, enable sites
61
66
COPY ./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
67
72
RUN a2enmod rewrite
68
73
RUN a2enmod ssl
69
74
70
- # install Xdebug in case development or test environment
75
+ # install Xdebug in case dev/ test environment
71
76
COPY ./docker/general/do_we_need_xdebug.sh /tmp/
72
77
COPY ./docker/dev/xdebug.ini /tmp/
73
78
RUN chmod u+x /tmp/do_we_need_xdebug.sh && /tmp/do_we_need_xdebug.sh
74
79
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
+
75
84
# install composer
76
85
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
77
86
RUN chmod +x /usr/bin/composer
@@ -80,7 +89,7 @@ ENV COMPOSER_ALLOW_SUPERUSER 1
80
89
# add supervisor
81
90
RUN mkdir -p /var/log/supervisor
82
91
COPY --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
84
93
RUN chmod 0600 /var/spool/cron/crontabs/root
85
94
86
95
# generate certificates
@@ -90,13 +99,10 @@ RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private
90
99
# set working directory
91
100
WORKDIR $APP_HOME
92
101
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}
97
103
98
104
# copy source files
99
- COPY --chown=www-data:www-data . $APP_HOME/
105
+ COPY --chown=${USERNAME}:${USERNAME} . $APP_HOME/
100
106
101
107
# install all PHP dependencies
102
108
RUN 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