add alpine image
This commit is contained in:
parent
2d7687928a
commit
6d6f5de012
17 changed files with 697 additions and 120 deletions
19
README.md
19
README.md
|
@ -22,11 +22,13 @@ It is hightly based on work from [darknao](https://github.com/darknao/docker-dot
|
||||||
|
|
||||||
dotclear_version-server_type
|
dotclear_version-server_type
|
||||||
|
|
||||||
* jcpd/docker-dotclear:latest is base on stable Debian / Nginx / PHP-FPM
|
* jcpd/docker-dotclear:latest is base on stable Alpine / Nginx / PHP-FPM
|
||||||
* jcpd/docker-dotclear:x.xx-dnf is based on stable Debian / Nginx / PHP-FPM
|
* jcpd/docker-dotclear:x.xx-dnf is based on stable Debian / Nginx / PHP-FPM
|
||||||
* jcpd/docker-dotclear:x.xx-anf is based on stable Alpine / Nginx / PHP-FPM
|
* jcpd/docker-dotclear:x.xx-anf is based on stable Alpine / Nginx / PHP-FPM
|
||||||
* ... (next to come)
|
* ... (next to come)
|
||||||
|
|
||||||
|
### DOCKER
|
||||||
|
|
||||||
Exemple of a docker compose file with a mariadb database.
|
Exemple of a docker compose file with a mariadb database.
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
@ -78,7 +80,16 @@ Builds should support postgresql and mysql database.
|
||||||
|
|
||||||
On first run you should wait that container download ans install required version of Dotclear...
|
On first run you should wait that container download ans install required version of Dotclear...
|
||||||
|
|
||||||
## TODO
|
### BLOG
|
||||||
|
|
||||||
|
These images support Dotclear URL rewriting in PATH INFO mode.
|
||||||
|
To configure default blog, go to the administration interface at http://localhost/admin,
|
||||||
|
* left side menu _Blog settings_
|
||||||
|
* panel _Advanced parameters_
|
||||||
|
* set _Blog URL_ to http://localhost/ (with trailing slash)
|
||||||
|
* set _URL scan method_ to 'PATH_INFO'
|
||||||
|
|
||||||
|
### TODO
|
||||||
|
|
||||||
* Disable upgrade from Dotclear. Should only use upgrade from container restart ?
|
* Disable upgrade from Dotclear. Should only use upgrade from container restart ?
|
||||||
* or Fix downgrade on container restart when Dotclear has been upgraded from UI.
|
* or Fix downgrade on container restart when Dotclear has been upgraded from UI.
|
||||||
|
@ -89,12 +100,12 @@ On first run you should wait that container download ans install required versio
|
||||||
* Enhance server and php configuration. From x.conf files.
|
* Enhance server and php configuration. From x.conf files.
|
||||||
* Add builds from Alpine and Apache and maybe without FPM.
|
* Add builds from Alpine and Apache and maybe without FPM.
|
||||||
|
|
||||||
## CONTRIBUTING
|
### CONTRIBUTING
|
||||||
|
|
||||||
This image is an open source project. If you'd like to contribute, please read the [CONTRIBUTING file](/CONTRIBUTING.md).
|
This image is an open source project. If you'd like to contribute, please read the [CONTRIBUTING file](/CONTRIBUTING.md).
|
||||||
You can submit a pull request, or feel free to use any other way you'd prefer.
|
You can submit a pull request, or feel free to use any other way you'd prefer.
|
||||||
|
|
||||||
## License
|
### LICENSE
|
||||||
|
|
||||||
Copyright Jean-Christian Paul Denis
|
Copyright Jean-Christian Paul Denis
|
||||||
AGPL-v3 <https://www.gnu.org/licenses/agpl-3.0.html>
|
AGPL-v3 <https://www.gnu.org/licenses/agpl-3.0.html>
|
||||||
|
|
87
alpine/nginx/2.31/Dockerfile
Normal file
87
alpine/nginx/2.31/Dockerfile
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# docker-dotclear:2.31-anf
|
||||||
|
|
||||||
|
##
|
||||||
|
# Alpine
|
||||||
|
##
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
RUN echo "UTC" > /etc/timezone
|
||||||
|
|
||||||
|
##
|
||||||
|
# Nginx
|
||||||
|
##
|
||||||
|
|
||||||
|
RUN adduser -D -g 'www' www
|
||||||
|
RUN apk add --no-cache --update \
|
||||||
|
nginx \
|
||||||
|
curl \
|
||||||
|
tar \
|
||||||
|
unzip
|
||||||
|
|
||||||
|
RUN mkdir -p /var/www/html \
|
||||||
|
&& chown -R www:www /var/lib/nginx \
|
||||||
|
&& chown -R www:www /var/www
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
##
|
||||||
|
# PHP
|
||||||
|
##
|
||||||
|
|
||||||
|
ENV VER_PHP php83
|
||||||
|
|
||||||
|
RUN apk add --no-cache --update \
|
||||||
|
${VER_PHP}-common \
|
||||||
|
${VER_PHP}-cli \
|
||||||
|
${VER_PHP}-fpm \
|
||||||
|
${VER_PHP}-session \
|
||||||
|
${VER_PHP}-curl \
|
||||||
|
${VER_PHP}-gd \
|
||||||
|
${VER_PHP}-gmp \
|
||||||
|
${VER_PHP}-exif \
|
||||||
|
${VER_PHP}-tidy \
|
||||||
|
${VER_PHP}-intl \
|
||||||
|
${VER_PHP}-json \
|
||||||
|
${VER_PHP}-mbstring \
|
||||||
|
${VER_PHP}-iconv \
|
||||||
|
${VER_PHP}-gettext \
|
||||||
|
${VER_PHP}-mysqli \
|
||||||
|
${VER_PHP}-opcache \
|
||||||
|
${VER_PHP}-dom \
|
||||||
|
${VER_PHP}-xml \
|
||||||
|
${VER_PHP}-simplexml \
|
||||||
|
${VER_PHP}-zip \
|
||||||
|
${VER_PHP}-sqlite3
|
||||||
|
|
||||||
|
COPY php.ini /etc/${VER_PHP}/php.ini
|
||||||
|
COPY php-fpm.conf /etc/${VER_PHP}/php-fpm.d/www.conf
|
||||||
|
|
||||||
|
##
|
||||||
|
# Dotclear
|
||||||
|
##
|
||||||
|
|
||||||
|
ENV VER_DOTCLEAR 2.31
|
||||||
|
ENV MD5_DOTCLEAR ec08bbcee14132ac7bcefb8ce5d415ed
|
||||||
|
|
||||||
|
RUN mkdir -p /usr/src/dotclear \
|
||||||
|
&& curl -fsSL -o dotclear.zip "http://download.dotclear.org/attic/dotclear-${VER_DOTCLEAR}.zip" \
|
||||||
|
&& echo "$MD5_DOTCLEAR dotclear.zip" | md5sum -c - \
|
||||||
|
&& unzip -d /usr/src dotclear.zip \
|
||||||
|
&& rm dotclear.zip \
|
||||||
|
&& chown -R www:www /usr/src/dotclear \
|
||||||
|
&& chmod -R 755 /usr/src/dotclear/public /usr/src/dotclear/cache \
|
||||||
|
&& rm -f /var/www/html/*
|
||||||
|
|
||||||
|
##
|
||||||
|
# END
|
||||||
|
##
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
ADD docker-entrypoint.sh /entrypoint.sh
|
||||||
|
ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]
|
||||||
|
|
||||||
|
HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:80/fpm-ping || exit 1
|
9
alpine/nginx/2.31/docker-compose.yaml
Normal file
9
alpine/nginx/2.31/docker-compose.yaml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# docker-dotclear:2.31-anf
|
||||||
|
|
||||||
|
services:
|
||||||
|
dc_app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: docker-dotclear:2.31-anf
|
||||||
|
container_name: dotclear
|
43
alpine/nginx/2.31/docker-entrypoint.sh
Normal file
43
alpine/nginx/2.31/docker-entrypoint.sh
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# docker-dotclear:2.31-anf
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Check if Dotclear exists
|
||||||
|
if ! [ -e index.php -a -e src/App.php ]; then
|
||||||
|
# First installation
|
||||||
|
echo >&2 "Dotclear not found in $(pwd) - copying now..."
|
||||||
|
if [ "$(ls -A)" ]; then
|
||||||
|
echo >&2 "WARNING: $(pwd) is not empty - press Ctrl+C now if this is an error!"
|
||||||
|
( set -x; ls -A; sleep 5 )
|
||||||
|
fi
|
||||||
|
echo >&2 "Copying Dotclear files..."
|
||||||
|
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
||||||
|
echo >&2 "Complete! Dotclear has been successfully copied to $(pwd)"
|
||||||
|
else
|
||||||
|
echo >&2 "Dotclear found in $(pwd), checking upgrade..."
|
||||||
|
# Check if Dotclear needs upgrade
|
||||||
|
VER_CURRENT=$(sed -n "s/^\s*\"release_version\":\s*\"\(.*\)\",/\1/p" release.json)
|
||||||
|
if [ "$VER_CURRENT" != "$VER_DOTCLEAR" ]; then
|
||||||
|
echo >&2 "Upgrading Dotclear files from ${VER_CURRENT} to ${VER_DOTCLEAR}, please wait..."
|
||||||
|
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
||||||
|
echo >&2 "Complete! Dotclear files have been successfully upgraded to ${VER_DOTCLEAR}"
|
||||||
|
else
|
||||||
|
echo >&2 "No need to upgrade Dotclear ${VER_DOTCLEAR}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
echo >&2 "Setting up permissions..."
|
||||||
|
chown -R www:www /var/www/html
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
echo >&2 "Alpine $(cat /etc/alpine-release)"
|
||||||
|
echo >&2 "$(nginx -v)PHP $(php -r "echo PHP_VERSION;")"
|
||||||
|
echo >&2 "Dotclear: ${VER_DOTCLEAR}"
|
||||||
|
|
||||||
|
php-fpm83 -D # FPM must start first in daemon mode
|
||||||
|
nginx # Then nginx in no daemon mode
|
||||||
|
|
||||||
|
exec "$@"
|
67
alpine/nginx/2.31/nginx.conf
Normal file
67
alpine/nginx/2.31/nginx.conf
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
; docker-dotclear:2.31-anf
|
||||||
|
|
||||||
|
user www;
|
||||||
|
daemon off;
|
||||||
|
worker_processes auto;
|
||||||
|
error_log /dev/stderr notice;
|
||||||
|
pid /var/run/nginx/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
sendfile on;
|
||||||
|
#access_log /var/log/nginx/access.log;
|
||||||
|
keepalive_timeout 3000;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
root /var/www/html;
|
||||||
|
index index.php index.html;
|
||||||
|
server_name localhost;
|
||||||
|
client_max_body_size 32m;
|
||||||
|
#error_page 500 502 503 504 /50x.html;
|
||||||
|
|
||||||
|
location ~ ^/(db|cache|plugins|inc) {
|
||||||
|
deny all;
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ @dotclear_path_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @dotclear_path_info {
|
||||||
|
rewrite ^/(.*) /index.php/$1 last;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ [^/]\.php(/|$) {
|
||||||
|
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||||
|
if (!-f $document_root$fastcgi_script_name) {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
include fastcgi_params;
|
||||||
|
set $path_info $fastcgi_path_info;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
|
||||||
|
|
||||||
|
#fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_pass unix:/run/php-fpm.sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/(fpm-ping)$ {
|
||||||
|
access_log off;
|
||||||
|
allow 127.0.0.1;
|
||||||
|
deny all;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_pass unix:/run/php-fpm.sock;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
alpine/nginx/2.31/php-fpm.conf
Normal file
21
alpine/nginx/2.31/php-fpm.conf
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
; docker-dotclear:2.31-anf
|
||||||
|
|
||||||
|
[global]
|
||||||
|
error_log = /dev/stderr
|
||||||
|
pid = /var/run/php-fpm.pid
|
||||||
|
|
||||||
|
[www]
|
||||||
|
user = www
|
||||||
|
group = www
|
||||||
|
listen = /run/php-fpm.sock
|
||||||
|
listen.owner = www
|
||||||
|
listen.group = www
|
||||||
|
listen.mode = 0660
|
||||||
|
pm = ondemand
|
||||||
|
pm.max_children = 100
|
||||||
|
pm.process_idle_timeout = 10s;
|
||||||
|
pm.max_requests = 1000
|
||||||
|
ping.path = /fpm-ping
|
||||||
|
catch_workers_output = yes
|
||||||
|
decorate_workers_output = no
|
||||||
|
clear_env = no
|
116
alpine/nginx/2.31/php.ini
Normal file
116
alpine/nginx/2.31/php.ini
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
; docker-dotclear:2.31-anf
|
||||||
|
|
||||||
|
[PHP]
|
||||||
|
|
||||||
|
engine = On
|
||||||
|
short_open_tag = Off
|
||||||
|
precision = 14
|
||||||
|
output_buffering = 4096
|
||||||
|
zlib.output_compression = Off
|
||||||
|
implicit_flush = Off
|
||||||
|
unserialize_callback_func =
|
||||||
|
serialize_precision = -1
|
||||||
|
disable_functions =
|
||||||
|
disable_classes =
|
||||||
|
zend.enable_gc = On
|
||||||
|
zend.exception_ignore_args = On
|
||||||
|
zend.exception_string_param_max_len = 0
|
||||||
|
|
||||||
|
expose_php = On
|
||||||
|
|
||||||
|
max_execution_time = 30
|
||||||
|
max_input_time = 60
|
||||||
|
memory_limit = 512M
|
||||||
|
max_input_vars = 1500
|
||||||
|
|
||||||
|
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
|
||||||
|
display_errors = On
|
||||||
|
display_startup_errors = On
|
||||||
|
log_errors = On
|
||||||
|
ignore_repeated_errors = Off
|
||||||
|
ignore_repeated_source = Off
|
||||||
|
report_memleaks = On
|
||||||
|
error_log = /dev/stderr
|
||||||
|
|
||||||
|
variables_order = "GPCS"
|
||||||
|
request_order = "GP"
|
||||||
|
register_argc_argv = Off
|
||||||
|
auto_globals_jit = On
|
||||||
|
post_max_size = 100M
|
||||||
|
auto_prepend_file =
|
||||||
|
auto_append_file =
|
||||||
|
default_mimetype = "text/html"
|
||||||
|
default_charset = "UTF-8"
|
||||||
|
|
||||||
|
include_path = ".:/usr/share/php83"
|
||||||
|
doc_root =
|
||||||
|
user_dir =
|
||||||
|
enable_dl = Off
|
||||||
|
|
||||||
|
file_uploads = On
|
||||||
|
upload_max_filesize = 50M
|
||||||
|
max_file_uploads = 200
|
||||||
|
|
||||||
|
allow_url_fopen = On
|
||||||
|
allow_url_include = Off
|
||||||
|
default_socket_timeout = 60
|
||||||
|
|
||||||
|
[CLI Server]
|
||||||
|
cli_server.color = On
|
||||||
|
|
||||||
|
[mail function]
|
||||||
|
SMTP = localhost
|
||||||
|
smtp_port = 25
|
||||||
|
mail.add_x_header = Off
|
||||||
|
mail.mixed_lf_and_crlf = Off
|
||||||
|
|
||||||
|
[MySQLi]
|
||||||
|
mysqli.max_persistent = -1
|
||||||
|
mysqli.allow_persistent = On
|
||||||
|
mysqli.max_links = -1
|
||||||
|
mysqli.default_port = 3306
|
||||||
|
mysqli.default_socket =
|
||||||
|
mysqli.default_host =
|
||||||
|
mysqli.default_user =
|
||||||
|
mysqli.default_pw =
|
||||||
|
|
||||||
|
[PostgreSQL]
|
||||||
|
pgsql.allow_persistent = On
|
||||||
|
pgsql.auto_reset_persistent = Off
|
||||||
|
pgsql.max_persistent = -1
|
||||||
|
pgsql.max_links = -1
|
||||||
|
pgsql.ignore_notice = 0
|
||||||
|
pgsql.log_notice = 0
|
||||||
|
|
||||||
|
[Session]
|
||||||
|
session.save_handler = files
|
||||||
|
session.use_strict_mode = 0
|
||||||
|
session.use_cookies = 1
|
||||||
|
session.use_only_cookies = 1
|
||||||
|
session.name = PHPSESSID
|
||||||
|
session.auto_start = 0
|
||||||
|
session.cookie_lifetime = 0
|
||||||
|
session.cookie_path = /
|
||||||
|
session.cookie_domain =
|
||||||
|
session.cookie_httponly =
|
||||||
|
session.cookie_samesite =
|
||||||
|
session.serialize_handler = php
|
||||||
|
session.gc_probability = 1
|
||||||
|
session.gc_divisor = 1000
|
||||||
|
session.gc_maxlifetime = 1440
|
||||||
|
session.referer_check =
|
||||||
|
session.cache_limiter = nocache
|
||||||
|
session.cache_expire = 180
|
||||||
|
session.use_trans_sid = 0
|
||||||
|
session.sid_length = 26
|
||||||
|
session.trans_sid_tags = "a=href,area=href,frame=src,form="
|
||||||
|
session.sid_bits_per_character = 5
|
||||||
|
|
||||||
|
[opcache]
|
||||||
|
opcache.enable=1
|
||||||
|
opcache.enable_cli=1
|
||||||
|
opcache.memory_consumption=128
|
||||||
|
opcache.interned_strings_buffer=8
|
||||||
|
opcache.max_accelerated_files=4000
|
||||||
|
opcache.revalidate_freq=2
|
||||||
|
|
30
alpine/nginx/docker-compose.yaml
Normal file
30
alpine/nginx/docker-compose.yaml
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
services:
|
||||||
|
|
||||||
|
# MYSQL database service
|
||||||
|
dc_db:
|
||||||
|
image: mariadb:latest
|
||||||
|
container_name: dotcleardb
|
||||||
|
restart: always
|
||||||
|
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
|
||||||
|
volumes:
|
||||||
|
- dc_db:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: dotclear_root
|
||||||
|
MYSQL_DATABASE: dotclear_db
|
||||||
|
MYSQL_USER: dotclear_user
|
||||||
|
MYSQL_PASSWORD: dotclear_pwd
|
||||||
|
|
||||||
|
# PHP-FPM Service
|
||||||
|
dc_app:
|
||||||
|
image: jcpd/docker-dotclear:2.31-anf
|
||||||
|
container_name: dotclearphp
|
||||||
|
volumes:
|
||||||
|
- dc_app:/var/www/html
|
||||||
|
ports:
|
||||||
|
- 8080:80
|
||||||
|
depends_on:
|
||||||
|
- dc_db # MYSQL database service
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
dc_app: # NGINX volume
|
||||||
|
dc_db: # MYSQL volume
|
87
alpine/nginx/latest/Dockerfile
Normal file
87
alpine/nginx/latest/Dockerfile
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# docker-dotclear:latest
|
||||||
|
|
||||||
|
##
|
||||||
|
# Alpine
|
||||||
|
##
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
RUN echo "UTC" > /etc/timezone
|
||||||
|
|
||||||
|
##
|
||||||
|
# Nginx
|
||||||
|
##
|
||||||
|
|
||||||
|
RUN adduser -D -g 'www' www
|
||||||
|
RUN apk add --no-cache --update \
|
||||||
|
nginx \
|
||||||
|
curl \
|
||||||
|
tar \
|
||||||
|
unzip
|
||||||
|
|
||||||
|
RUN mkdir -p /var/www/html \
|
||||||
|
&& chown -R www:www /var/lib/nginx \
|
||||||
|
&& chown -R www:www /var/www
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
##
|
||||||
|
# PHP
|
||||||
|
##
|
||||||
|
|
||||||
|
ENV VER_PHP php83
|
||||||
|
|
||||||
|
RUN apk add --no-cache --update \
|
||||||
|
${VER_PHP}-common \
|
||||||
|
${VER_PHP}-cli \
|
||||||
|
${VER_PHP}-fpm \
|
||||||
|
${VER_PHP}-session \
|
||||||
|
${VER_PHP}-curl \
|
||||||
|
${VER_PHP}-gd \
|
||||||
|
${VER_PHP}-gmp \
|
||||||
|
${VER_PHP}-exif \
|
||||||
|
${VER_PHP}-tidy \
|
||||||
|
${VER_PHP}-intl \
|
||||||
|
${VER_PHP}-json \
|
||||||
|
${VER_PHP}-mbstring \
|
||||||
|
${VER_PHP}-iconv \
|
||||||
|
${VER_PHP}-gettext \
|
||||||
|
${VER_PHP}-mysqli \
|
||||||
|
${VER_PHP}-opcache \
|
||||||
|
${VER_PHP}-dom \
|
||||||
|
${VER_PHP}-xml \
|
||||||
|
${VER_PHP}-simplexml \
|
||||||
|
${VER_PHP}-zip \
|
||||||
|
${VER_PHP}-sqlite3
|
||||||
|
|
||||||
|
COPY php.ini /etc/${VER_PHP}/php.ini
|
||||||
|
COPY php-fpm.conf /etc/${VER_PHP}/php-fpm.d/www.conf
|
||||||
|
|
||||||
|
##
|
||||||
|
# Dotclear
|
||||||
|
##
|
||||||
|
|
||||||
|
ENV VER_DOTCLEAR 2.31
|
||||||
|
ENV MD5_DOTCLEAR ec08bbcee14132ac7bcefb8ce5d415ed
|
||||||
|
|
||||||
|
RUN mkdir -p /usr/src/dotclear \
|
||||||
|
&& curl -fsSL -o dotclear.zip "http://download.dotclear.org/attic/dotclear-${VER_DOTCLEAR}.zip" \
|
||||||
|
&& echo "$MD5_DOTCLEAR dotclear.zip" | md5sum -c - \
|
||||||
|
&& unzip -d /usr/src dotclear.zip \
|
||||||
|
&& rm dotclear.zip \
|
||||||
|
&& chown -R www:www /usr/src/dotclear \
|
||||||
|
&& chmod -R 755 /usr/src/dotclear/public /usr/src/dotclear/cache \
|
||||||
|
&& rm -f /var/www/html/*
|
||||||
|
|
||||||
|
##
|
||||||
|
# END
|
||||||
|
##
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
ADD docker-entrypoint.sh /entrypoint.sh
|
||||||
|
ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]
|
||||||
|
|
||||||
|
HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:80/fpm-ping || exit 1
|
|
@ -1,8 +1,9 @@
|
||||||
# docker-dotclear:latest
|
# docker-dotclear:latest
|
||||||
|
|
||||||
services:
|
services:
|
||||||
dc_app:
|
dc_app:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: docker-dotclear:latest # debian nginx php-fpm
|
image: docker-dotclear:latest
|
||||||
container_name: dotclear
|
container_name: dotclear
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
# docker-dotclear:latest
|
# docker-dotclear:latest
|
||||||
|
|
||||||
|
@ -10,34 +10,34 @@ if ! [ -e index.php -a -e src/App.php ]; then
|
||||||
echo >&2 "Dotclear not found in $(pwd) - copying now..."
|
echo >&2 "Dotclear not found in $(pwd) - copying now..."
|
||||||
if [ "$(ls -A)" ]; then
|
if [ "$(ls -A)" ]; then
|
||||||
echo >&2 "WARNING: $(pwd) is not empty - press Ctrl+C now if this is an error!"
|
echo >&2 "WARNING: $(pwd) is not empty - press Ctrl+C now if this is an error!"
|
||||||
( set -x; ls -A; sleep 10 )
|
( set -x; ls -A; sleep 5 )
|
||||||
fi
|
fi
|
||||||
|
echo >&2 "Copying Dotclear files..."
|
||||||
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
||||||
echo >&2 "Complete! Dotclear has been successfully copied to $(pwd)"
|
echo >&2 "Complete! Dotclear has been successfully copied to $(pwd)"
|
||||||
else
|
else
|
||||||
echo >&2 "Dotclear found in $(pwd), checking upgrade..."
|
echo >&2 "Dotclear found in $(pwd), checking upgrade..."
|
||||||
# Check if Dotclear needs upgrade
|
# Check if Dotclear needs upgrade
|
||||||
DOTCLEAR_CURRENT_VERSION=$(sed -n "s/^\s*\"release_version\":\s*\"\(.*\)\",/\1/p" release.json)
|
VER_CURRENT=$(sed -n "s/^\s*\"release_version\":\s*\"\(.*\)\",/\1/p" release.json)
|
||||||
if [ "$DOTCLEAR_CURRENT_VERSION" != "$DOTCLEAR_VERSION" ]; then
|
if [ "$VER_CURRENT" != "$VER_DOTCLEAR" ]; then
|
||||||
echo >&2 "Upgrading Dotclear files from ${DOTCLEAR_CURRENT_VERSION} to ${DOTCLEAR_VERSION}, please wait..."
|
echo >&2 "Upgrading Dotclear files from ${VER_CURRENT} to ${VER_DOTCLEAR}, please wait..."
|
||||||
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
||||||
echo >&2 "Complete! Dotclear files have been successfully upgraded to ${DOTCLEAR_VERSION}"
|
echo >&2 "Complete! Dotclear files have been successfully upgraded to ${VER_DOTCLEAR}"
|
||||||
else
|
else
|
||||||
echo >&2 "No need to upgrade Dotclear ${DOTCLEAR_VERSION}"
|
echo >&2 "No need to upgrade Dotclear ${VER_DOTCLEAR}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Permissions
|
# Permissions
|
||||||
chown -R www-data:www-data /var/www/html
|
echo >&2 "Setting up permissions..."
|
||||||
|
chown -R www:www /var/www/html
|
||||||
|
|
||||||
# Summary
|
# Summary
|
||||||
echo >&2 "Starting services..."
|
echo >&2 "Alpine $(cat /etc/alpine-release)"
|
||||||
echo >&2 "Debian $(cat /etc/debian_version)"
|
echo >&2 "$(nginx -v)PHP $(php -r "echo PHP_VERSION;")"
|
||||||
echo >&2 "$(nginx -v)PHP: $(php -r "echo PHP_VERSION;")"
|
echo >&2 "Dotclear: ${VER_DOTCLEAR}"
|
||||||
echo >&2 "Dotclear: ${DOTCLEAR_VERSION}"
|
|
||||||
|
|
||||||
# Start services (in right order)
|
php-fpm83 -D # FPM must start first in daemon mode
|
||||||
php-fpm -D
|
nginx # Then nginx in no daemon mode
|
||||||
nginx -g 'daemon off;'
|
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
67
alpine/nginx/latest/nginx.conf
Normal file
67
alpine/nginx/latest/nginx.conf
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
; docker-dotclear:latest
|
||||||
|
|
||||||
|
user www;
|
||||||
|
daemon off;
|
||||||
|
worker_processes auto;
|
||||||
|
error_log /dev/stderr notice;
|
||||||
|
pid /var/run/nginx/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
sendfile on;
|
||||||
|
#access_log /var/log/nginx/access.log;
|
||||||
|
keepalive_timeout 3000;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
root /var/www/html;
|
||||||
|
index index.php index.html;
|
||||||
|
server_name localhost;
|
||||||
|
client_max_body_size 32m;
|
||||||
|
#error_page 500 502 503 504 /50x.html;
|
||||||
|
|
||||||
|
location ~ ^/(db|cache|plugins|inc) {
|
||||||
|
deny all;
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ @dotclear_path_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @dotclear_path_info {
|
||||||
|
rewrite ^/(.*) /index.php/$1 last;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ [^/]\.php(/|$) {
|
||||||
|
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||||
|
if (!-f $document_root$fastcgi_script_name) {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
include fastcgi_params;
|
||||||
|
set $path_info $fastcgi_path_info;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
|
||||||
|
|
||||||
|
#fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_pass unix:/run/php-fpm.sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/(fpm-ping)$ {
|
||||||
|
access_log off;
|
||||||
|
allow 127.0.0.1;
|
||||||
|
deny all;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_pass unix:/run/php-fpm.sock;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
alpine/nginx/latest/php-fpm.conf
Normal file
21
alpine/nginx/latest/php-fpm.conf
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
; docker-dotclear:latest
|
||||||
|
|
||||||
|
[global]
|
||||||
|
error_log = /dev/stderr
|
||||||
|
pid = /var/run/php-fpm.pid
|
||||||
|
|
||||||
|
[www]
|
||||||
|
user = www
|
||||||
|
group = www
|
||||||
|
listen = /run/php-fpm.sock
|
||||||
|
listen.owner = www
|
||||||
|
listen.group = www
|
||||||
|
listen.mode = 0660
|
||||||
|
pm = ondemand
|
||||||
|
pm.max_children = 100
|
||||||
|
pm.process_idle_timeout = 10s;
|
||||||
|
pm.max_requests = 1000
|
||||||
|
ping.path = /fpm-ping
|
||||||
|
catch_workers_output = yes
|
||||||
|
decorate_workers_output = no
|
||||||
|
clear_env = no
|
116
alpine/nginx/latest/php.ini
Normal file
116
alpine/nginx/latest/php.ini
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
; docker-dotclear:latest
|
||||||
|
|
||||||
|
[PHP]
|
||||||
|
|
||||||
|
engine = On
|
||||||
|
short_open_tag = Off
|
||||||
|
precision = 14
|
||||||
|
output_buffering = 4096
|
||||||
|
zlib.output_compression = Off
|
||||||
|
implicit_flush = Off
|
||||||
|
unserialize_callback_func =
|
||||||
|
serialize_precision = -1
|
||||||
|
disable_functions =
|
||||||
|
disable_classes =
|
||||||
|
zend.enable_gc = On
|
||||||
|
zend.exception_ignore_args = On
|
||||||
|
zend.exception_string_param_max_len = 0
|
||||||
|
|
||||||
|
expose_php = On
|
||||||
|
|
||||||
|
max_execution_time = 30
|
||||||
|
max_input_time = 60
|
||||||
|
memory_limit = 512M
|
||||||
|
max_input_vars = 1500
|
||||||
|
|
||||||
|
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
|
||||||
|
display_errors = On
|
||||||
|
display_startup_errors = On
|
||||||
|
log_errors = On
|
||||||
|
ignore_repeated_errors = Off
|
||||||
|
ignore_repeated_source = Off
|
||||||
|
report_memleaks = On
|
||||||
|
error_log = /dev/stderr
|
||||||
|
|
||||||
|
variables_order = "GPCS"
|
||||||
|
request_order = "GP"
|
||||||
|
register_argc_argv = Off
|
||||||
|
auto_globals_jit = On
|
||||||
|
post_max_size = 100M
|
||||||
|
auto_prepend_file =
|
||||||
|
auto_append_file =
|
||||||
|
default_mimetype = "text/html"
|
||||||
|
default_charset = "UTF-8"
|
||||||
|
|
||||||
|
include_path = ".:/usr/share/php83"
|
||||||
|
doc_root =
|
||||||
|
user_dir =
|
||||||
|
enable_dl = Off
|
||||||
|
|
||||||
|
file_uploads = On
|
||||||
|
upload_max_filesize = 50M
|
||||||
|
max_file_uploads = 200
|
||||||
|
|
||||||
|
allow_url_fopen = On
|
||||||
|
allow_url_include = Off
|
||||||
|
default_socket_timeout = 60
|
||||||
|
|
||||||
|
[CLI Server]
|
||||||
|
cli_server.color = On
|
||||||
|
|
||||||
|
[mail function]
|
||||||
|
SMTP = localhost
|
||||||
|
smtp_port = 25
|
||||||
|
mail.add_x_header = Off
|
||||||
|
mail.mixed_lf_and_crlf = Off
|
||||||
|
|
||||||
|
[MySQLi]
|
||||||
|
mysqli.max_persistent = -1
|
||||||
|
mysqli.allow_persistent = On
|
||||||
|
mysqli.max_links = -1
|
||||||
|
mysqli.default_port = 3306
|
||||||
|
mysqli.default_socket =
|
||||||
|
mysqli.default_host =
|
||||||
|
mysqli.default_user =
|
||||||
|
mysqli.default_pw =
|
||||||
|
|
||||||
|
[PostgreSQL]
|
||||||
|
pgsql.allow_persistent = On
|
||||||
|
pgsql.auto_reset_persistent = Off
|
||||||
|
pgsql.max_persistent = -1
|
||||||
|
pgsql.max_links = -1
|
||||||
|
pgsql.ignore_notice = 0
|
||||||
|
pgsql.log_notice = 0
|
||||||
|
|
||||||
|
[Session]
|
||||||
|
session.save_handler = files
|
||||||
|
session.use_strict_mode = 0
|
||||||
|
session.use_cookies = 1
|
||||||
|
session.use_only_cookies = 1
|
||||||
|
session.name = PHPSESSID
|
||||||
|
session.auto_start = 0
|
||||||
|
session.cookie_lifetime = 0
|
||||||
|
session.cookie_path = /
|
||||||
|
session.cookie_domain =
|
||||||
|
session.cookie_httponly =
|
||||||
|
session.cookie_samesite =
|
||||||
|
session.serialize_handler = php
|
||||||
|
session.gc_probability = 1
|
||||||
|
session.gc_divisor = 1000
|
||||||
|
session.gc_maxlifetime = 1440
|
||||||
|
session.referer_check =
|
||||||
|
session.cache_limiter = nocache
|
||||||
|
session.cache_expire = 180
|
||||||
|
session.use_trans_sid = 0
|
||||||
|
session.sid_length = 26
|
||||||
|
session.trans_sid_tags = "a=href,area=href,frame=src,form="
|
||||||
|
session.sid_bits_per_character = 5
|
||||||
|
|
||||||
|
[opcache]
|
||||||
|
opcache.enable=1
|
||||||
|
opcache.enable_cli=1
|
||||||
|
opcache.memory_consumption=128
|
||||||
|
opcache.interned_strings_buffer=8
|
||||||
|
opcache.max_accelerated_files=4000
|
||||||
|
opcache.revalidate_freq=2
|
||||||
|
|
2
debian/nginx/docker-compose.yaml
vendored
2
debian/nginx/docker-compose.yaml
vendored
|
@ -16,7 +16,7 @@ services:
|
||||||
|
|
||||||
# PHP-FPM Service
|
# PHP-FPM Service
|
||||||
dc_app:
|
dc_app:
|
||||||
image: jcpd/docker-dotclear:latest
|
image: jcpd/docker-dotclear:2.31-dnf
|
||||||
container_name: dotclearphp
|
container_name: dotclearphp
|
||||||
volumes:
|
volumes:
|
||||||
- dc_app:/var/www/html
|
- dc_app:/var/www/html
|
||||||
|
|
62
debian/nginx/latest/Dockerfile
vendored
62
debian/nginx/latest/Dockerfile
vendored
|
@ -1,62 +0,0 @@
|
||||||
# docker-dotclear:latest
|
|
||||||
# Debian 12.7 / nginx 1.22.1 / php-fpm 8.3
|
|
||||||
|
|
||||||
# Base from PHP official FPM image
|
|
||||||
FROM php:8.3-fpm
|
|
||||||
|
|
||||||
# Dotclear version
|
|
||||||
ENV DOTCLEAR_VERSION 2.31
|
|
||||||
ENV DOTCLEAR_MD5 ec08bbcee14132ac7bcefb8ce5d415ed
|
|
||||||
|
|
||||||
# Required system packages
|
|
||||||
RUN set -x; \
|
|
||||||
apt-get update \
|
|
||||||
&& apt-get install -y nginx \
|
|
||||||
&& apt-get install -y --no-install-recommends \
|
|
||||||
postgresql-server-dev-all \
|
|
||||||
libfreetype6-dev \
|
|
||||||
libjpeg62-turbo-dev \
|
|
||||||
libpng-dev \
|
|
||||||
libonig-dev \
|
|
||||||
rsync \
|
|
||||||
unzip \
|
|
||||||
&& rm -r /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Required php packages
|
|
||||||
RUN docker-php-ext-install opcache mbstring pgsql mysqli \
|
|
||||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
||||||
&& docker-php-ext-install gd
|
|
||||||
|
|
||||||
# Opcache
|
|
||||||
RUN { \
|
|
||||||
echo 'opcache.memory_consumption=128'; \
|
|
||||||
echo 'opcache.interned_strings_buffer=8'; \
|
|
||||||
echo 'opcache.max_accelerated_files=4000'; \
|
|
||||||
echo 'opcache.revalidate_freq=2'; \
|
|
||||||
echo 'opcache.fast_shutdown=1'; \
|
|
||||||
echo 'opcache.enable_cli=1'; \
|
|
||||||
} > /usr/local/etc/php/conf.d/php-opocache-cfg.ini
|
|
||||||
|
|
||||||
# Web server configuartion
|
|
||||||
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
|
||||||
COPY server.conf /etc/nginx/conf.d/default.conf
|
|
||||||
|
|
||||||
WORKDIR /var/www/html
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
# Get Dotclear
|
|
||||||
RUN mkdir -p /usr/src/dotclear \
|
|
||||||
&& curl -fsSL -o dotclear.zip "http://download.dotclear.org/attic/dotclear-${DOTCLEAR_VERSION}.zip" \
|
|
||||||
&& echo "$DOTCLEAR_MD5 dotclear.zip" | md5sum -c - \
|
|
||||||
&& unzip -d /usr/src dotclear.zip \
|
|
||||||
&& rm dotclear.zip \
|
|
||||||
&& chown -R www-data:www-data /usr/src/dotclear \
|
|
||||||
&& chmod -R 755 /usr/src/dotclear/public /usr/src/dotclear/cache \
|
|
||||||
&& rm -f /var/www/html/*
|
|
||||||
|
|
||||||
# Entrypoint
|
|
||||||
ADD ../docker-entrypoint.sh /entrypoint.sh
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
||||||
|
|
||||||
# Container healthcheck
|
|
||||||
HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:8080/fpm-ping || exit 1
|
|
37
debian/nginx/latest/server.conf
vendored
37
debian/nginx/latest/server.conf
vendored
|
@ -1,37 +0,0 @@
|
||||||
# docker-dotclear:latest
|
|
||||||
# nginx php-fpm server configuration to rewrite Dotclear's URL
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name localhost;
|
|
||||||
root /var/www/html;
|
|
||||||
|
|
||||||
index index.php;
|
|
||||||
|
|
||||||
location ~ ^/(db|cache|plugins|inc) {
|
|
||||||
deny all;
|
|
||||||
return 404;
|
|
||||||
}
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ @dotclear_path_info;
|
|
||||||
}
|
|
||||||
|
|
||||||
location @dotclear_path_info {
|
|
||||||
rewrite ^/(.*) /index.php/$1 last;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ [^/]\.php(/|$) {
|
|
||||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
|
||||||
if (!-f $document_root$fastcgi_script_name) {
|
|
||||||
return 404;
|
|
||||||
}
|
|
||||||
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
|
||||||
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
|
|
||||||
|
|
||||||
fastcgi_pass 127.0.0.1:9000;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue