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