This commit is contained in:
commit
e50cb2cdd8
2
.dockerignore
Normal file
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.git
|
||||||
|
tags
|
56
.drone.yml
Normal file
56
.drone.yml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
kind: pipeline
|
||||||
|
name: default
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: php7.4
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: hub_username
|
||||||
|
password:
|
||||||
|
from_secret: hub_password
|
||||||
|
repo:
|
||||||
|
from_secret: hub_repo
|
||||||
|
build_args:
|
||||||
|
- PHP_VERSION=7.4-fpm-alpine3.13
|
||||||
|
tags: 7.4-alpine
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- alpine
|
||||||
|
depends_on: [ clone ]
|
||||||
|
|
||||||
|
- name: php7.3
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: hub_username
|
||||||
|
password:
|
||||||
|
from_secret: hub_password
|
||||||
|
repo:
|
||||||
|
from_secret: hub_repo
|
||||||
|
build_args:
|
||||||
|
- PHP_VERSION=7.3-fpm-alpine3.12
|
||||||
|
tags: 7.3-alpine
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- alpine
|
||||||
|
depends_on: [ clone ]
|
||||||
|
|
||||||
|
- name: php7.2
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: hub_username
|
||||||
|
password:
|
||||||
|
from_secret: hub_password
|
||||||
|
repo:
|
||||||
|
from_secret: hub_repo
|
||||||
|
build_args:
|
||||||
|
- PHP_VERSION=7.2-fpm-alpine3.12
|
||||||
|
tags: 7.2-alpine
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- alpine
|
||||||
|
depends_on: [ clone ]
|
||||||
|
|
||||||
|
|
108
Dockerfile
Normal file
108
Dockerfile
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
ARG PHP_VERSION=7.4-fpm-alpine3.13
|
||||||
|
|
||||||
|
FROM paramah/base:alpine as base-config
|
||||||
|
|
||||||
|
#
|
||||||
|
# Build php extenstions
|
||||||
|
#
|
||||||
|
#==================================================
|
||||||
|
FROM php:${PHP_VERSION} as builder
|
||||||
|
|
||||||
|
RUN apk add --no-cache wget \
|
||||||
|
curl \
|
||||||
|
bash \
|
||||||
|
git \
|
||||||
|
openssh \
|
||||||
|
openssl \
|
||||||
|
bzip2-dev \
|
||||||
|
curl-dev \
|
||||||
|
libpng libpng-dev \
|
||||||
|
icu-dev \
|
||||||
|
gettext gettext-dev \
|
||||||
|
imap-dev \
|
||||||
|
ldb-dev libldap openldap-dev \
|
||||||
|
oniguruma-dev \
|
||||||
|
postgresql-dev \
|
||||||
|
sqlite sqlite-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libzip libzip-dev zip
|
||||||
|
|
||||||
|
# Install php extensions
|
||||||
|
RUN docker-php-ext-install -j$(nproc) \
|
||||||
|
bcmath \
|
||||||
|
bz2 \
|
||||||
|
curl \
|
||||||
|
fileinfo \
|
||||||
|
gd \
|
||||||
|
gettext \
|
||||||
|
iconv \
|
||||||
|
imap \
|
||||||
|
intl \
|
||||||
|
json \
|
||||||
|
ldap \
|
||||||
|
mbstring \
|
||||||
|
opcache \
|
||||||
|
pcntl \
|
||||||
|
pdo \
|
||||||
|
pdo_mysql \
|
||||||
|
pdo_pgsql \
|
||||||
|
pdo_sqlite \
|
||||||
|
pgsql \
|
||||||
|
phar \
|
||||||
|
session \
|
||||||
|
simplexml \
|
||||||
|
soap \
|
||||||
|
xml \
|
||||||
|
zip
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Final image
|
||||||
|
#
|
||||||
|
#==================================================
|
||||||
|
FROM php:${PHP_VERSION}
|
||||||
|
|
||||||
|
# install system libs
|
||||||
|
RUN apk add --no-cache libintl c-client libpng icu-libs libldap libpq libzip
|
||||||
|
|
||||||
|
# Install apps
|
||||||
|
RUN apk add --no-cache wget curl bash git openssh supervisor nginx openssl zip
|
||||||
|
|
||||||
|
ENV DIR /var/www
|
||||||
|
ENV DOCKERIZE_VERSION v0.6.1
|
||||||
|
|
||||||
|
# Install dockerize
|
||||||
|
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
|
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
|
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
||||||
|
|
||||||
|
COPY --from=base-config /etc/supervisor /etc/supervisor
|
||||||
|
COPY --from=builder /usr/local/lib/php /usr/local/lib/php
|
||||||
|
COPY --from=builder /usr/local/etc /usr/local/etc
|
||||||
|
|
||||||
|
#install composer (v2 with parallel downloads)
|
||||||
|
RUN wget -O /bin/composer https://getcomposer.org/composer.phar
|
||||||
|
RUN chmod a+x /bin/composer
|
||||||
|
|
||||||
|
#install cachetool
|
||||||
|
RUN wget -O /bin/cachetool http://gordalina.github.io/cachetool/downloads/cachetool.phar
|
||||||
|
RUN chmod a+x /bin/cachetool
|
||||||
|
|
||||||
|
#install phpunit
|
||||||
|
RUN wget -O phpunit https://phar.phpunit.de/phpunit-9.phar
|
||||||
|
RUN install phpunit /usr/local/bin
|
||||||
|
|
||||||
|
# Create directories
|
||||||
|
RUN mkdir -p /var/www
|
||||||
|
|
||||||
|
WORKDIR $DIR
|
||||||
|
|
||||||
|
# Copy base configuration files
|
||||||
|
COPY docker/etc /etc/
|
||||||
|
|
||||||
|
# Copy docker tools
|
||||||
|
COPY docker/tools /usr/local/bin/
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
|
78
README.md
Normal file
78
README.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# PHP 7.4 (nginx, fpm, supervisord)
|
||||||
|
|
||||||
|
New base.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# All extension
|
||||||
|
|
||||||
|
```
|
||||||
|
# Install dockerize
|
||||||
|
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
|
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
|
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
|
&& docker-php-ext-install -j$(nproc) \
|
||||||
|
bcmath \
|
||||||
|
bz2 \
|
||||||
|
calendar \
|
||||||
|
ctype \
|
||||||
|
curl \
|
||||||
|
dba \
|
||||||
|
dom \
|
||||||
|
enchant \
|
||||||
|
exif \
|
||||||
|
ffi \
|
||||||
|
fileinfo \
|
||||||
|
filter \
|
||||||
|
ftp \
|
||||||
|
gd \
|
||||||
|
gettext \
|
||||||
|
gmp \
|
||||||
|
hash \
|
||||||
|
iconv \
|
||||||
|
imap \
|
||||||
|
intl \
|
||||||
|
json \
|
||||||
|
ldap \
|
||||||
|
mbstring \
|
||||||
|
mysqli \
|
||||||
|
oci8 \
|
||||||
|
odbc \
|
||||||
|
opcache \
|
||||||
|
pcntl \
|
||||||
|
pdo \
|
||||||
|
pdo_dblib \
|
||||||
|
pdo_firebird \
|
||||||
|
pdo_mysql \
|
||||||
|
pdo_oci \
|
||||||
|
pdo_odbc \
|
||||||
|
pdo_pgsql \
|
||||||
|
pdo_sqlite \
|
||||||
|
pgsql \
|
||||||
|
phar \
|
||||||
|
posix \
|
||||||
|
pspell \
|
||||||
|
readline \
|
||||||
|
reflection \
|
||||||
|
session \
|
||||||
|
shmop \
|
||||||
|
simplexml \
|
||||||
|
snmp \
|
||||||
|
soap \
|
||||||
|
sockets \
|
||||||
|
sodium \
|
||||||
|
spl \
|
||||||
|
standard \
|
||||||
|
sysvmsg \
|
||||||
|
sysvsem \
|
||||||
|
sysvshm \
|
||||||
|
tidy \
|
||||||
|
tokenizer \
|
||||||
|
xml \
|
||||||
|
xmlreader \
|
||||||
|
xmlrpc \
|
||||||
|
xmlwriter \
|
||||||
|
xsl \
|
||||||
|
zend_test \
|
||||||
|
zip
|
||||||
|
```
|
23
docker/etc/nginx/conf.d/default.conf.disabled
Normal file
23
docker/etc/nginx/conf.d/default.conf.disabled
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
server {
|
||||||
|
server_name _;
|
||||||
|
root /var/www/;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri /index.php$is_args$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/index\.php(/|$) {
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
||||||
|
include fastcgi_params;
|
||||||
|
|
||||||
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||||
|
fastcgi_param DOCUMENT_ROOT $realpath_root;
|
||||||
|
}
|
||||||
|
|
||||||
|
# return 404 for all other php files not matching the front controller
|
||||||
|
# this prevents access to other php files you don't want to be accessible.
|
||||||
|
location ~ \.php$ {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
}
|
40
docker/etc/nginx/conf.d/sf.conf.disabled
Normal file
40
docker/etc/nginx/conf.d/sf.conf.disabled
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
server {
|
||||||
|
server_name _;
|
||||||
|
root /var/www/public;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
# try to serve file directly, fallback to index.php
|
||||||
|
try_files $uri /index.php$is_args$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/index\.php(/|$) {
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
||||||
|
include fastcgi_params;
|
||||||
|
|
||||||
|
# optionally set the value of the environment variables used in the application
|
||||||
|
# fastcgi_param APP_ENV prod;
|
||||||
|
# fastcgi_param APP_SECRET <app-secret-id>;
|
||||||
|
# fastcgi_param DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name";
|
||||||
|
|
||||||
|
# When you are using symlinks to link the document root to the
|
||||||
|
# current version of your application, you should pass the real
|
||||||
|
# application path instead of the path to the symlink to PHP
|
||||||
|
# FPM.
|
||||||
|
# Otherwise, PHP's OPcache may not properly detect changes to
|
||||||
|
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
|
||||||
|
# for more information).
|
||||||
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||||
|
fastcgi_param DOCUMENT_ROOT $realpath_root;
|
||||||
|
# Prevents URIs that include the front controller. This will 404:
|
||||||
|
# http://domain.tld/index.php/some-path
|
||||||
|
# Remove the internal directive to allow URIs like this
|
||||||
|
internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
# return 404 for all other php files not matching the front controller
|
||||||
|
# this prevents access to other php files you don't want to be accessible.
|
||||||
|
location ~ \.php$ {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
}
|
37
docker/etc/nginx/conf.d/sf3.conf.disabled
Normal file
37
docker/etc/nginx/conf.d/sf3.conf.disabled
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
server {
|
||||||
|
client_max_body_size 108M;
|
||||||
|
|
||||||
|
root /var/www/web;
|
||||||
|
|
||||||
|
rewrite ^/app\.php/?(.*)$ /$1 permanent;
|
||||||
|
|
||||||
|
try_files $uri @rewriteapp;
|
||||||
|
|
||||||
|
location @rewriteapp {
|
||||||
|
rewrite ^(.*)$ /app.php/$1 last;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Deny all . files
|
||||||
|
location ~ /\. {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/(app|app_dev)\.php(/|$) {
|
||||||
|
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
||||||
|
fastcgi_index app.php;
|
||||||
|
send_timeout 1800;
|
||||||
|
fastcgi_read_timeout 1800;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_buffers 16 16k;
|
||||||
|
fastcgi_buffer_size 32k;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /(bundles|media) {
|
||||||
|
access_log off;
|
||||||
|
expires 30d;
|
||||||
|
try_files $uri @rewriteapp;
|
||||||
|
}
|
||||||
|
}
|
38
docker/etc/nginx/nginx.conf
Normal file
38
docker/etc/nginx/nginx.conf
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
user www-data;
|
||||||
|
daemon off;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
worker_processes auto;
|
||||||
|
worker_rlimit_nofile 65535;
|
||||||
|
|
||||||
|
include /etc/nginx/modules/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
multi_accept on;
|
||||||
|
worker_connections 65535;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
charset utf-8;
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
server_tokens off;
|
||||||
|
log_not_found off;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
client_max_body_size 16M;
|
||||||
|
|
||||||
|
# MIME
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
# logging
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
error_log /var/log/nginx/error.log warn;
|
||||||
|
|
||||||
|
#gzip
|
||||||
|
gzip on;
|
||||||
|
|
||||||
|
# load configs
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
include /etc/nginx/sites-enabled/*;
|
||||||
|
}
|
0
docker/etc/supervisor/services/.gitkeep
Normal file
0
docker/etc/supervisor/services/.gitkeep
Normal file
6
docker/etc/supervisor/services/nginx.conf
Normal file
6
docker/etc/supervisor/services/nginx.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[program:nginx]
|
||||||
|
command=/usr/sbin/nginx
|
||||||
|
autorestart=true
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
redirect_stderr=true
|
6
docker/etc/supervisor/services/php-fpm.conf
Normal file
6
docker/etc/supervisor/services/php-fpm.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[program:php-fpm]
|
||||||
|
command=/usr/local/sbin/php-fpm -R -F
|
||||||
|
autorestart=true
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
redirect_stderr=true
|
37
docker/tools/ngxconfig
Executable file
37
docker/tools/ngxconfig
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -eo pipefail
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
CONF_DIR=/etc/nginx/conf.d
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo -e "Usage: ngxconfig file\n"
|
||||||
|
echo -e "Enables given nginx configuration stored in \"${CONF_DIR}\" as \".disabled\"."
|
||||||
|
echo -e "Exits with code 1 if configuration file was not found.\n"
|
||||||
|
echo -e "Options:\n"
|
||||||
|
echo -e " -h | --help\n\tShow this help.\n"
|
||||||
|
echo -e "Example:\n ngxconfig sf.conf\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
config=
|
||||||
|
|
||||||
|
while [[ "$1" != "" ]]; do
|
||||||
|
case $1 in
|
||||||
|
-h | --help ) usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
* ) config=$1
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -f "/etc/nginx/conf.d/${config}.disabled" ]]; then
|
||||||
|
echo "Enabling config \"${config}\"..."
|
||||||
|
rm ${CONF_DIR}/default.conf
|
||||||
|
mv ${CONF_DIR}/${config}.disabled ${CONF_DIR}/${config}
|
||||||
|
elif [[ -f "/etc/nginx/conf.d/${config}" ]]; then
|
||||||
|
echo "Config \"${config}\" already enabled!"
|
||||||
|
else
|
||||||
|
echo "Config \"${config}\" not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user