Skip to content

Commit 529c8b7

Browse files
committed
Various updates
- Add FPM for 7.1, 7.2, and 7.3 - Update nginx config to have rewrites - Update MariaDB to use NFS
1 parent 9433a6d commit 529c8b7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+2034
-61
lines changed

app/docker-compose.yml

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ services:
1919
volumes:
2020
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/logs/mariadb:/var/log/mysql:delegated"
2121
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/etc/mysql/conf.d/:/etc/mysql/conf.d/"
22-
- "/System/Volumes/Data/Users/Shared/www/mysql:/var/lib/mysql"
22+
- "nfsmount3:/var/lib/mysql"
2323
httpd:
2424
build:
2525
context: "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/images/httpd"
@@ -32,12 +32,12 @@ services:
3232
- "9080:9080"
3333
- "9443:9443"
3434
volumes:
35-
- "shared:/shared:cached" # allow to use the php-fpm socket
35+
- "shared:/shared" # allow to use the php-fpm socket
3636
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/logs/httpd:/var/log/httpd:delegated"
37-
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/certificates:/certificates:cached"
38-
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/usr/local/apache2/conf.d:/usr/local/apache2/conf.d:cached"
39-
- "/System/Volumes/Data/Users/Shared/www/public_html:/var/www/html"
40-
37+
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/certificates:/certificates"
38+
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/usr/local/apache2/conf.d:/usr/local/apache2/conf.d"
39+
- "nfsmount:/var/www/html"
40+
- "nfsmount2:/var/www/git"
4141
nginx:
4242
build:
4343
context: "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/images/nginx"
@@ -59,17 +59,19 @@ services:
5959
- "8080:8080"
6060
- "443:443"
6161
volumes:
62-
- "shared:/shared:cached" # allow to use the php-fpm socket
62+
- "shared:/shared" # allow to use the php-fpm socket
6363
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/logs/nginx:/var/log/nginx:delegated"
64-
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/certificates:/certificates:cached"
65-
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/etc/nginx/conf.d:/etc/nginx/conf.d:cached"
64+
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/certificates:/certificates"
65+
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/etc/nginx/conf.d:/etc/nginx/conf.d"
6666
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/etc/nginx/sites-available:/etc/nginx/sites-available"
6767
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/etc/nginx/sites-enabled:/etc/nginx/sites-enabled"
68+
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/etc/nginx/devboards-available:/etc/nginx/devboards-available"
69+
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/etc/nginx/devboards-enabled:/etc/nginx/devboards-enabled"
6870
- "nfsmount:/var/www/html"
6971
- "nfsmount2:/var/www/git"
7072
php-fpm:
7173
build:
72-
context: "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/images/php-fpm"
74+
context: "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/images/php-fpm-${DOCKER_PHP_VERSION}"
7375
container_name: "php-fpm"
7476
depends_on:
7577
- "mysql"
@@ -82,14 +84,14 @@ services:
8284
networks: &php-networks
8385
- "dev_network"
8486
volumes: &php-volumes
85-
- "shared:/shared:cached" # expose php-fpm socket
87+
- "shared:/shared" # expose php-fpm socket
8688
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/logs/php-fpm:/var/log/php-fpm:delegated"
87-
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/certificates:/usr/local/share/ca-certificates:cached" # Mount extra certificates
89+
- "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/resources/certificates:/usr/local/share/ca-certificates" # Mount extra certificates
8890
- "nfsmount:/var/www/html"
8991
- "nfsmount2:/var/www/git"
9092
php-fpm-xdebug:
9193
build:
92-
context: "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/images/php-fpm"
94+
context: "/System/Volumes/Data/Users/Shared/www/git/docker-php-apache/app/images/php-fpm-${DOCKER_PHP_VERSION}"
9395
dockerfile: DockerfileXDebug
9496
container_name: "php-fpm-xdebug"
9597
environment: *php-env
@@ -109,6 +111,12 @@ volumes:
109111
type: nfs
110112
o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
111113
device: ":/System/Volumes/Data/Users/Shared/www/git"
114+
nfsmount3:
115+
driver: local
116+
driver_opts:
117+
type: nfs
118+
o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
119+
device: ":/System/Volumes/Data/Users/Shared/www/mysql"
112120
shared:
113121

114122
networks:

app/images/mariadb/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
FROM mariadb:10.5
22

33
COPY etc/mysql/my.cnf /etc/mysql/my.cnf
4+
5+
RUN usermod -u 501 mysql
6+
RUN usermod -G staff mysql

app/images/php-fpm-71/Dockerfile

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
FROM php:7.1-fpm-buster
2+
3+
RUN set -xe; \
4+
apt-get update \
5+
&& apt-get install -y \
6+
# for bz2
7+
libbz2-dev \
8+
# for gmp
9+
libgmp-dev \
10+
# for imap
11+
libc-client-dev \
12+
libkrb5-dev \
13+
# for intl extension
14+
libicu-dev \
15+
# for gd
16+
libfreetype6-dev \
17+
libjpeg62-turbo-dev \
18+
libpng-dev \
19+
# for mbstring
20+
libonig-dev \
21+
# memchached extension
22+
libmemcached-dev \
23+
# for pspell
24+
libpspell-dev \
25+
# for soap
26+
libxml2-dev \
27+
# for xsl
28+
libxslt1-dev \
29+
# for zip
30+
libzip-dev \
31+
# allow mailing to work
32+
sendmail \
33+
# allow reading of image exif
34+
exiftool \
35+
# allow unzipping
36+
unzip \
37+
# allow fetching
38+
wget \
39+
# pecl installs
40+
&& docker-php-ext-install exif \
41+
&& pecl install memcached \
42+
&& pecl install redis \
43+
&& pecl install apcu \
44+
# enable pecl installed extentions
45+
&& docker-php-ext-enable memcached \
46+
&& docker-php-ext-enable redis \
47+
&& docker-php-ext-enable apcu \
48+
&& docker-php-ext-enable exif \
49+
&& docker-php-ext-enable opcache \
50+
# built in extensions install
51+
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
52+
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
53+
&& docker-php-ext-install -j$(nproc) \
54+
bcmath \
55+
bz2 \
56+
calendar \
57+
dba \
58+
gd \
59+
gettext \
60+
gmp \
61+
iconv \
62+
imap \
63+
intl \
64+
mbstring \
65+
mysqli \
66+
pdo \
67+
pdo_mysql \
68+
pcntl \
69+
pspell \
70+
soap \
71+
sockets \
72+
xsl \
73+
zip \
74+
# syslogd
75+
&& apt-get install -y rsyslog \
76+
# cleanup
77+
&& pecl clear-cache
78+
COPY ./conf/php-fpm.conf /usr/local/etc/php-fpm.conf
79+
COPY ./conf/00-php.ini /usr/local/etc/php/conf.d/00-php.ini
80+
COPY ./conf/zzzz-override.ini /usr/local/etc/php/conf.d/zzzz-override.ini
81+
COPY ./conf/docker-sendmail.ini /usr/local/etc/php/conf.d/docker-sendmail.ini
82+
83+
RUN mkdir -p /usr/share/man/man1
84+
85+
RUN apt update \
86+
&& apt upgrade -y \
87+
&& apt-get update \
88+
&& apt-get install -y ssl-cert xfonts-utils fontconfig libxrender1 xfonts-75dpi xfonts-base libjpeg62-turbo libxext6 wget telnet redis-server default-jre git git-flow ssh
89+
90+
RUN usermod -u 501 www-data
91+
RUN usermod -G staff www-data
92+
93+
RUN mkdir /root/.ssh/
94+
RUN touch /root/.ssh/known_hosts
95+
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
96+
97+
COPY ./root/bash_profile /root/.bash_profile
98+
COPY ./root/ssh/config /root/.ssh/config
99+
COPY ./root/ssh/github.pkey /root/.ssh/github
100+
101+
#RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -
102+
#RUN apt-get -y install nodejs
103+
#RUN npm install
104+
105+
RUN rm -rf \
106+
/var/lib/apt/lists/* \
107+
/usr/src/php/ext/* \
108+
/tmp/*
109+
110+
RUN mkdir -p /shared/var/run/
111+
RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
112+
RUN touch /var/log/syslog
113+
114+
# https://hub.docker.com/_/composer/
115+
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
116+
ENV COMPOSER_ALLOW_SUPERUSER 1
117+
ENV COMPOSER_HOME /root/.composer
118+
ENV COMPOSER_VERSION 2
119+
120+
# https://github.com/wimg/PHPCompatibility/releases
121+
ENV PHP_COMPATIBILITY_VERSION 8.1.0
122+
123+
RUN composer global require consolidation/robo
124+
RUN composer global require friendsofphp/php-cs-fixer
125+
126+
COPY docker-entrypoint.sh /docker-entrypoint.sh
127+
128+
CMD ["/docker-entrypoint.sh"]
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
FROM php:7.1-fpm-buster
2+
3+
RUN set -xe; \
4+
apt-get update \
5+
&& apt-get install -y \
6+
# for bz2
7+
libbz2-dev \
8+
# for gmp
9+
libgmp-dev \
10+
# for imap
11+
libc-client-dev \
12+
libkrb5-dev \
13+
# for intl extension
14+
libicu-dev \
15+
# for gd
16+
libfreetype6-dev \
17+
libjpeg62-turbo-dev \
18+
libpng-dev \
19+
# for mbstring
20+
libonig-dev \
21+
# memchached extension
22+
libmemcached-dev \
23+
# for pspell
24+
libpspell-dev \
25+
# for soap
26+
libxml2-dev \
27+
# for xsl
28+
libxslt1-dev \
29+
# for zip
30+
libzip-dev \
31+
# allow mailing to work
32+
sendmail \
33+
# allow reading of image exif
34+
exiftool \
35+
# allow unzipping
36+
unzip \
37+
# allow fetching
38+
wget \
39+
# pecl installs
40+
&& docker-php-ext-install exif \
41+
&& pecl install xdebug-beta \
42+
&& pecl install memcached \
43+
&& pecl install redis \
44+
&& pecl install apcu \
45+
# enable pecl installed extentions
46+
&& docker-php-ext-enable xdebug \
47+
&& docker-php-ext-enable memcached \
48+
&& docker-php-ext-enable redis \
49+
&& docker-php-ext-enable apcu \
50+
&& docker-php-ext-enable exif \
51+
&& docker-php-ext-enable opcache \
52+
# built in extensions install
53+
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
54+
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
55+
&& docker-php-ext-install -j$(nproc) \
56+
bcmath \
57+
bz2 \
58+
calendar \
59+
dba \
60+
gd \
61+
gettext \
62+
gmp \
63+
iconv \
64+
imap \
65+
intl \
66+
mbstring \
67+
mysqli \
68+
pdo \
69+
pdo_mysql \
70+
pcntl \
71+
pspell \
72+
soap \
73+
sockets \
74+
xsl \
75+
zip \
76+
# syslogd
77+
&& apt-get install -y rsyslog \
78+
# cleanup
79+
&& pecl clear-cache
80+
COPY ./conf/php-fpm-xdebug.conf /usr/local/etc/php-fpm.conf
81+
COPY ./conf/00-php.ini /usr/local/etc/php/conf.d/00-php.ini
82+
COPY ./conf/10-xdebug.ini /usr/local/etc/php/conf.d/10-xdebug.ini
83+
COPY ./conf/zzzz-override.ini /usr/local/etc/php/conf.d/zzzz-override.ini
84+
COPY ./conf/docker-sendmail.ini /usr/local/etc/php/conf.d/docker-sendmail.ini
85+
86+
RUN mkdir -p /usr/share/man/man1
87+
88+
RUN apt update \
89+
&& apt upgrade -y \
90+
&& apt-get update \
91+
&& apt-get install -y ssl-cert xfonts-utils fontconfig libxrender1 xfonts-75dpi xfonts-base libjpeg62-turbo libxext6 wget telnet redis-server default-jre git git-flow ssh
92+
93+
RUN usermod -u 501 www-data
94+
RUN usermod -G staff www-data
95+
96+
RUN mkdir /root/.ssh/
97+
RUN touch /root/.ssh/known_hosts
98+
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
99+
100+
COPY ./root/bash_profile /root/.bash_profile
101+
COPY ./root/ssh/config /root/.ssh/config
102+
COPY ./root/ssh/github.pkey /root/.ssh/github
103+
104+
#RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -
105+
#RUN apt-get -y install nodejs
106+
#RUN npm install
107+
108+
RUN rm -rf \
109+
/var/lib/apt/lists/* \
110+
/usr/src/php/ext/* \
111+
/tmp/*
112+
113+
RUN mkdir -p /shared/var/run/
114+
RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
115+
RUN touch /var/log/syslog
116+
117+
# https://hub.docker.com/_/composer/
118+
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
119+
ENV COMPOSER_ALLOW_SUPERUSER 1
120+
ENV COMPOSER_HOME /root/.composer
121+
ENV COMPOSER_VERSION 2
122+
123+
# https://github.com/wimg/PHPCompatibility/releases
124+
ENV PHP_COMPATIBILITY_VERSION 8.1.0
125+
126+
RUN composer global require consolidation/robo
127+
RUN composer global require friendsofphp/php-cs-fixer
128+
129+
COPY docker-entrypoint.sh /docker-entrypoint.sh
130+
131+
CMD ["/docker-entrypoint.sh"]

app/images/php-fpm-71/conf/00-php.ini

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
date.timezone = Europe/London
2+
3+
log_errors = 1
4+
log_errors_max_len = 0
5+
error_log = /var/log/php-fpm/www.error.log
6+
error_reporting = -1
7+
display_startup_errors = on
8+
display_errors = on
9+
10+
upload_max_size = 128M
11+
post_max_size = 128M
12+
upload_max_filesize = 128M
13+
14+
; let's have php live longer in local dev (600 sec = 10 min)
15+
max_execution_time = 600
16+
17+
[opcache]
18+
opcache.enable=0
19+
; 0 means it will check on every request
20+
; 0 is irrelevant if opcache.validate_timestamps=0 which is desirable in production
21+
opcache.revalidate_freq=0
22+
opcache.validate_timestamps=1
23+
opcache.max_accelerated_files=100000
24+
opcache.memory_consumption=500
25+
opcache.max_wasted_percentage=20
26+
opcache.interned_strings_buffer=16
27+
opcache.fast_shutdown=1
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
xdebug.idekey = PHPSTORM
2+
3+
xdebug.mode=debug
4+
xdebug.client_host = "host.docker.internal"
5+
xdebug.max_nesting_level = -1
6+
7+
; One second only. Fast expiry.
8+
; Keep requesting the cookie if you want it.
9+
xdebug.remote_cookie_expire_time = 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sendmail_path = /usr/sbin/sendmail -t -i

0 commit comments

Comments
 (0)