Skip to content

Commit ff226b1

Browse files
author
Peter Svistunov
committed
Initial commit
0 parents  commit ff226b1

File tree

12 files changed

+1075
-0
lines changed

12 files changed

+1075
-0
lines changed

Dockerfile

Lines changed: 243 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
FROM alpine:3.6
2+
3+
# Create user www-data
4+
RUN addgroup -S -g 82 www-data && \
5+
adduser -u 82 -s /bin/bash -D -G www-data www-data && \
6+
addgroup -S nginx && \
7+
adduser -S -D -H -h /var/www/localhost/htdocs -s /sbin/nologin -G nginx -g nginx nginx && \
8+
addgroup nginx www-data
9+
10+
# Install packages
11+
#RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories && \
12+
# echo '@edgemain http://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories
13+
RUN apk add --update \
14+
bash \
15+
libressl \
16+
ca-certificates \
17+
openssh-client \
18+
rsync \
19+
git \
20+
curl \
21+
wget \
22+
gzip \
23+
tar \
24+
patch \
25+
perl \
26+
pcre \
27+
imap \
28+
imagemagick \
29+
mariadb-client \
30+
yaml \
31+
file \
32+
icu-libs \
33+
# Temp packages
34+
build-base \
35+
autoconf \
36+
libtool \
37+
php7-dev \
38+
pcre-dev \
39+
imagemagick-dev \
40+
yaml-dev \
41+
zlib-dev \
42+
libmemcached \
43+
libmemcached-dev \
44+
libmemcached-libs \
45+
openssl \
46+
libressl-dev \
47+
# PHP packages
48+
php7 \
49+
php7-fpm \
50+
php7-opcache \
51+
php7-session \
52+
php7-dom \
53+
php7-xml \
54+
php7-xmlreader \
55+
php7-ctype \
56+
php7-ftp \
57+
php7-gd \
58+
php7-json \
59+
php7-posix \
60+
php7-curl \
61+
php7-pdo \
62+
php7-pdo_mysql \
63+
php7-sockets \
64+
php7-zlib \
65+
php7-mcrypt \
66+
php7-mysqli \
67+
php7-sqlite3 \
68+
php7-bz2 \
69+
php7-phar \
70+
php7-openssl \
71+
php7-posix \
72+
php7-zip \
73+
php7-calendar \
74+
php7-iconv \
75+
php7-imap \
76+
php7-soap \
77+
php7-dev \
78+
php7-pear \
79+
php7-redis \
80+
php7-mbstring \
81+
php7-xdebug \
82+
php7-exif \
83+
php7-xsl \
84+
php7-ldap \
85+
php7-bcmath \
86+
rabbitmq-c \
87+
rabbitmq-c-dev \
88+
php7-memcached \
89+
php7-intl \
90+
php7-tokenizer \
91+
php7-simplexml \
92+
php7-xmlwriter \
93+
php7-imagick \
94+
php7-apcu \
95+
nginx \
96+
nginx-mod-http-upload-progress \
97+
nginx-mod-http-lua \
98+
luajit \
99+
geoip \
100+
gd \
101+
libgd \
102+
supervisor
103+
104+
# install node-8 && yarn
105+
ENV NODE_VERSION 8.15.0
106+
RUN apk add --no-cache \
107+
libstdc++ \
108+
xz \
109+
&& apk add --no-cache --virtual .build-deps \
110+
binutils-gold \
111+
curl \
112+
g++ \
113+
gcc \
114+
gnupg \
115+
libgcc \
116+
linux-headers \
117+
make \
118+
python \
119+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
120+
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
121+
&& cd "node-v$NODE_VERSION" \
122+
&& ./configure \
123+
&& make -j$(getconf _NPROCESSORS_ONLN) \
124+
&& make install \
125+
&& apk del .build-deps \
126+
&& cd .. \
127+
&& rm -Rf "node-v$NODE_VERSION" \
128+
&& rm "node-v$NODE_VERSION.tar.xz"
129+
130+
ENV YARN_VERSION 1.13.0
131+
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
132+
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
133+
&& mkdir -p /opt \
134+
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
135+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
136+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
137+
&& rm yarn-v$YARN_VERSION.tar.gz \
138+
&& apk del .build-deps-yarn
139+
140+
# Create symlinks for backward compatibility
141+
RUN ln -sf /usr/bin/php7 /usr/bin/php && \
142+
ln -sf /usr/sbin/php-fpm7 /usr/bin/php-fpm && \
143+
# Install imagick
144+
sed -ie 's/-n//g' /usr/bin/pecl && \
145+
yes | pecl install yaml-2.0.0 && \
146+
echo 'extension=yaml.so' > /etc/php7/conf.d/yaml.ini && \
147+
# Install amqp
148+
mkdir -p $HOME/php-amqp && \
149+
cd $HOME/php-amqp && \
150+
git clone https://github.com/pdezwart/php-amqp.git . && git checkout v1.9.3 && \
151+
phpize --clean && phpize && ./configure && make install && \
152+
echo 'extension=amqp.so' > /etc/php7/conf.d/amqp.ini && \
153+
# Install uploadprogess
154+
cd /tmp/ && wget https://github.com/Jan-E/uploadprogress/archive/master.zip && \
155+
unzip master.zip && \
156+
cd uploadprogress-master/ && \
157+
phpize7 && ./configure --with-php-config=/usr/bin/php-config7 && \
158+
make && make install && \
159+
echo 'extension=uploadprogress.so' > /etc/php7/conf.d/20_uploadprogress.ini && \
160+
cd .. && rm -rf ./master.zip ./uploadprogress-master && \
161+
cd /tmp/ && wget https://github.com/longxinH/xhprof/archive/master.zip && \
162+
unzip master.zip && \
163+
cd xhprof-master/extension/ && \
164+
phpize7 && ./configure --with-php-config=/usr/bin/php-config7 && \
165+
make && make install && \
166+
cd .. && mv xhprof_* /usr/share/php7/ && \
167+
cd /tmp/ && rm -rf ./master.zip ./xhprof-master && \
168+
# Disable Xdebug
169+
rm /etc/php7/conf.d/xdebug.ini && \
170+
# Install composer
171+
curl -sS https://getcomposer.org/installer | php7 -- --install-dir=/usr/local/bin --filename=composer && \
172+
# Install PHPUnit
173+
curl -sSL https://phar.phpunit.de/phpunit.phar -o phpunit.phar && \
174+
chmod +x phpunit.phar && \
175+
mv phpunit.phar /usr/local/bin/phpunit && \
176+
# Cleanup
177+
apk del --purge \
178+
*-dev \
179+
build-base \
180+
autoconf \
181+
libtool \
182+
&& \
183+
rm -rf \
184+
/usr/include/php \
185+
/usr/lib/php/build \
186+
/var/cache/apk/* \
187+
/tmp/* \
188+
/root/.composer
189+
190+
# Configure php.ini
191+
RUN sed -i \
192+
-e "s/^expose_php.*/expose_php = Off/" \
193+
-e "s/^;date.timezone.*/date.timezone = UTC/" \
194+
-e "s/^memory_limit.*/memory_limit = -1/" \
195+
-e "s/^max_execution_time.*/max_execution_time = 300/" \
196+
-e "s/^post_max_size.*/post_max_size = 512M/" \
197+
-e "s/^upload_max_filesize.*/upload_max_filesize = 512M/" \
198+
-e "s/^error_reporting.*/error_reporting = E_ALL/" \
199+
-e "s/^display_errors.*/display_errors = On/" \
200+
-e "s/^display_startup_errors.*/display_startup_errors = On/" \
201+
-e "s/^track_errors.*/track_errors = On/" \
202+
-e "s/^mysqlnd.collect_memory_statistics.*/mysqlnd.collect_memory_statistics = On/" \
203+
/etc/php7/php.ini && \
204+
echo "error_log = \"/proc/self/fd/2\"" | tee -a /etc/php7/php.ini
205+
206+
# Copy PHP configs
207+
COPY conf/00_opcache.ini /etc/php7/conf.d/
208+
COPY conf/00_xdebug.ini /etc/php7/conf.d/
209+
COPY conf/php-fpm.conf /etc/php7/
210+
COPY conf/20_xhprof.ini /etc/php7/conf.d/
211+
212+
COPY conf/supervisord.conf /etc/supervisord.conf
213+
214+
COPY conf/nginx.conf /etc/nginx/nginx.conf
215+
COPY conf/fastcgi_params /etc/nginx/fastcgi_params
216+
217+
COPY conf/symfony.conf /opt/
218+
COPY conf/drupal7.conf /opt/
219+
COPY conf/drupal8.conf /opt/
220+
221+
# Create work dir
222+
RUN mkdir -p /var/www/html && \
223+
mkdir -p /var/www/site-php && \
224+
chown -R www-data:www-data /var/www
225+
226+
WORKDIR /var/www/html
227+
EXPOSE 9000
228+
EXPOSE 80 443
229+
# Init www-data user
230+
USER www-data
231+
232+
RUN composer global require hirak/prestissimo --optimize-autoloader && \
233+
rm -rf ~/.composer/.cache
234+
235+
USER root
236+
237+
RUN addgroup -g 1000 developer \
238+
&& adduser -u 1000 -G developer -s /bin/sh -h /home/developer -D developer
239+
240+
#RUN mkdir -p /.composer && chmod 1777 /.composer && chmod 777 /
241+
242+
COPY docker-entrypoint.sh /usr/local/bin/
243+
CMD docker-entrypoint.sh

conf/00_opcache.ini

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
zend_extension = opcache.so
2+
opcache.enable = 1
3+
opcache.validate_timestamps = 1
4+
opcache.revalidate_freq = 2
5+
opcache.max_accelerated_files = 20000
6+
opcache.memory_consumption = 64
7+
opcache.interned_strings_buffer = 16
8+
opcache.fast_shutdown = 1

conf/00_xdebug.ini

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
;zend_extension = xdebug.so
2+
xdebug.default_enable = 0
3+
xdebug.remote_enable = 1
4+
xdebug.remote_handler = dbgp
5+
xdebug.remote_port = 9000
6+
xdebug.remote_autostart = 1
7+
xdebug.remote_connect_back = 1
8+
xdebug.remote_host = localhost
9+
xdebug.max_nesting_level = 256

conf/20_xhprof.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
;extension=xhprof.so
2+
xhprof.output_dir="/tmp/xhprof"

0 commit comments

Comments
 (0)