initial build commit
This commit is contained in:
parent
7a45875731
commit
93c0e87876
10 changed files with 329 additions and 0 deletions
|
@ -71,6 +71,7 @@ Before Dotclear 2.32, on first run, Dotclear does installation process, you must
|
||||||
* MYSQL_DATABASE as database name
|
* MYSQL_DATABASE as database name
|
||||||
* MYSQL_USER as database login
|
* MYSQL_USER as database login
|
||||||
* MYSQL_PASSWORD as database password
|
* MYSQL_PASSWORD as database password
|
||||||
|
|
||||||
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...
|
||||||
|
|
||||||
## CONTRIBUTING
|
## CONTRIBUTING
|
||||||
|
|
60
debian/nginx/2.31/Dockerfile
vendored
Normal file
60
debian/nginx/2.31/Dockerfile
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
# docker-dotclear:3.31-dnf
|
||||||
|
# Debian 12.7 / nginx 1.22.1 / php-fpm 8.3
|
||||||
|
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
|
8
debian/nginx/2.31/docker-compose.yaml
vendored
Normal file
8
debian/nginx/2.31/docker-compose.yaml
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# docker-dotclear:3.31-dnf
|
||||||
|
services:
|
||||||
|
dc_app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: docker-dotclear:2.31-dnf # debian nginx php-fpm
|
||||||
|
container_name: dotclear
|
43
debian/nginx/2.31/docker-entrypoint.sh
vendored
Normal file
43
debian/nginx/2.31/docker-entrypoint.sh
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# docker-dotclear:3.31-dnf
|
||||||
|
|
||||||
|
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 10 )
|
||||||
|
fi
|
||||||
|
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
|
||||||
|
DOTCLEAR_CURRENT_VERSION=$(sed -n "s/^\s*\"release_version\":\s*\"\(.*\)\",/\1/p" release.json)
|
||||||
|
if [ "$DOTCLEAR_CURRENT_VERSION" != "$DOTCLEAR_VERSION" ]; then
|
||||||
|
echo >&2 "Upgrading Dotclear files from ${DOTCLEAR_CURRENT_VERSION} to ${DOTCLEAR_VERSION}, please wait..."
|
||||||
|
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
||||||
|
echo >&2 "Complete! Dotclear files have been successfully upgraded to ${DOTCLEAR_VERSION}"
|
||||||
|
else
|
||||||
|
echo >&2 "No need to upgrade Dotclear ${DOTCLEAR_VERSION}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
echo >&2 "Starting services..."
|
||||||
|
echo >&2 "Debian $(cat /etc/debian_version)"
|
||||||
|
echo >&2 "$(nginx -v)PHP: $(php -r "echo PHP_VERSION;")"
|
||||||
|
echo >&2 "Dotclear: ${DOTCLEAR_VERSION}"
|
||||||
|
|
||||||
|
# Start services (in right order)
|
||||||
|
php-fpm -D
|
||||||
|
nginx -g 'daemon off;'
|
||||||
|
|
||||||
|
exec "$@"
|
37
debian/nginx/2.31/server.conf
vendored
Normal file
37
debian/nginx/2.31/server.conf
vendored
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# docker-dotclear:3.31-dnf
|
||||||
|
# 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;
|
||||||
|
}
|
||||||
|
}
|
30
debian/nginx/docker-compose.yaml
vendored
Normal file
30
debian/nginx/docker-compose.yaml
vendored
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:latest
|
||||||
|
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
|
62
debian/nginx/latest/Dockerfile
vendored
Normal file
62
debian/nginx/latest/Dockerfile
vendored
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# 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
|
8
debian/nginx/latest/docker-compose.yaml
vendored
Normal file
8
debian/nginx/latest/docker-compose.yaml
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# docker-dotclear:latest
|
||||||
|
services:
|
||||||
|
dc_app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: docker-dotclear:latest # debian nginx php-fpm
|
||||||
|
container_name: dotclear
|
43
debian/nginx/latest/docker-entrypoint.sh
vendored
Normal file
43
debian/nginx/latest/docker-entrypoint.sh
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# docker-dotclear:latest
|
||||||
|
|
||||||
|
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 10 )
|
||||||
|
fi
|
||||||
|
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
|
||||||
|
DOTCLEAR_CURRENT_VERSION=$(sed -n "s/^\s*\"release_version\":\s*\"\(.*\)\",/\1/p" release.json)
|
||||||
|
if [ "$DOTCLEAR_CURRENT_VERSION" != "$DOTCLEAR_VERSION" ]; then
|
||||||
|
echo >&2 "Upgrading Dotclear files from ${DOTCLEAR_CURRENT_VERSION} to ${DOTCLEAR_VERSION}, please wait..."
|
||||||
|
tar cf - --one-file-system -C /usr/src/dotclear . | tar xf -
|
||||||
|
echo >&2 "Complete! Dotclear files have been successfully upgraded to ${DOTCLEAR_VERSION}"
|
||||||
|
else
|
||||||
|
echo >&2 "No need to upgrade Dotclear ${DOTCLEAR_VERSION}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
echo >&2 "Starting services..."
|
||||||
|
echo >&2 "Debian $(cat /etc/debian_version)"
|
||||||
|
echo >&2 "$(nginx -v)PHP: $(php -r "echo PHP_VERSION;")"
|
||||||
|
echo >&2 "Dotclear: ${DOTCLEAR_VERSION}"
|
||||||
|
|
||||||
|
# Start services (in right order)
|
||||||
|
php-fpm -D
|
||||||
|
nginx -g 'daemon off;'
|
||||||
|
|
||||||
|
exec "$@"
|
37
debian/nginx/latest/server.conf
vendored
Normal file
37
debian/nginx/latest/server.conf
vendored
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# 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