Compare commits
39 commits
Author | SHA1 | Date | |
---|---|---|---|
86b714f862 | |||
|
c0461931ce | ||
|
5add4ecc5c | ||
|
5c0ff42742 | ||
2d96ad6293 | |||
6440803124 | |||
5df62582be | |||
781dc698e7 | |||
d77f147ac0 | |||
f2e64f7544 | |||
68c4e77975 | |||
fa9fe2c5c1 | |||
5cf9dfe32e | |||
ad576b17ec | |||
94e26d8895 | |||
a38a026ee4 | |||
25323bd198 | |||
2eaa4724ce | |||
2a4a56ba92 | |||
1bed4fc629 | |||
79fab4526d | |||
70c616fa8e | |||
21761aff3a | |||
a49a1817b2 | |||
50af2a9a85 | |||
c32f858907 | |||
7af8fdf898 | |||
19f8849420 | |||
fea46b2af3 | |||
f353b75b94 | |||
673773b6bf | |||
14e3db80b5 | |||
da05bcf92b | |||
a83c41cb9e | |||
2b6f474541 | |||
ee0d865d14 | |||
cd2ce8f408 | |||
8bbd7bd885 | |||
ed3ae04b8b |
11 changed files with 376 additions and 92 deletions
82
.github/workflows/bump_DotclearWatch.yml
vendored
Normal file
82
.github/workflows/bump_DotclearWatch.yml
vendored
Normal file
|
@ -0,0 +1,82 @@
|
|||
name: Check plugin DotclearWatch
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '15 23 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
PLUGIN_NAME: DotclearWatch
|
||||
PLUGIN_REPO: jcdenis/DotclearWatch
|
||||
PLUGIN_ENV: DC_DOCKER_PLUGIN_DOTCLEARWATCH
|
||||
|
||||
jobs:
|
||||
version:
|
||||
name: Check versions
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
outputs:
|
||||
distant: ${{ steps.distant.outputs.version }}
|
||||
local: ${{ steps.local.outputs.version }}
|
||||
newer: ${{ steps.compare.outputs.newer }}
|
||||
steps:
|
||||
- name: Read distant version
|
||||
id: repository
|
||||
uses: oprypin/find-latest-tag@v1.1.2
|
||||
with:
|
||||
repository: ${{ env.PLUGIN_REPO }}
|
||||
prefix: 'v'
|
||||
- name: Parse distant version
|
||||
id: distant
|
||||
run: |
|
||||
version=${{ steps.repository.outputs.tag }}
|
||||
echo "version=${version:1}" >> $GITHUB_OUTPUT
|
||||
- name: Check out local repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Parse local version
|
||||
id: local
|
||||
run: |
|
||||
version=$(sed -n "s/\s*${{ env.PLUGIN_ENV }}=\(.*\)\s\(.*\)/\1/p" ./Dockerfile)
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
- name: Compare version
|
||||
id: compare
|
||||
run: |
|
||||
echo '* Distant: ${{ steps.distant.outputs.version }}' >> $GITHUB_STEP_SUMMARY
|
||||
echo '* Local: ${{ steps.local.outputs.version }}' >> $GITHUB_STEP_SUMMARY
|
||||
function version { echo "$@" | awk -F. '{ printf("%d%04d%03d\n", $1,$2,$3); }'; }
|
||||
if [ $(version '${{ steps.distant.outputs.version }}') -gt $(version '${{ steps.local.outputs.version }}') ]; then
|
||||
echo '* Plugin ${{ env.PLUGIN_NAME }} has newer version ${{ steps.message.outputs.message }}' >> $GITHUB_STEP_SUMMARY
|
||||
echo "newer=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo '* Plugin ${{ env.PLUGIN_NAME }} is up to date' >> $GITHUB_STEP_SUMMARY
|
||||
echo "newer=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
update:
|
||||
needs: version
|
||||
name: Update dockerfile
|
||||
if: (needs.version.outputs.newer == 'true')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Set message
|
||||
id: message
|
||||
run: |
|
||||
message=$'Bump ${{ env.PLUGIN_NAME }} from ${{ needs.version.outputs.local }} to ${{ needs.version.outputs.distant }}'
|
||||
echo "message=${message}" >> $GITHUB_OUTPUT
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Edit file
|
||||
run: |
|
||||
sed -i "s/${{ env.PLUGIN_ENV }}=${{ needs.version.outputs.local }}/${{ env.PLUGIN_ENV }}=${{ needs.version.outputs.distant }}/g" ./Dockerfile
|
||||
- name: Commit change
|
||||
uses: EndBug/add-and-commit@v9.1.4
|
||||
with:
|
||||
default_author: github_actions
|
||||
message: ${{ steps.message.outputs.message }}
|
||||
- name: summary
|
||||
run: echo '* ${{ steps.message.outputs.message }}' >> $GITHUB_STEP_SUMMARY
|
82
.github/workflows/bump_dcLog.yml
vendored
Normal file
82
.github/workflows/bump_dcLog.yml
vendored
Normal file
|
@ -0,0 +1,82 @@
|
|||
name: Check plugin dcLog
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '25 23 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
PLUGIN_NAME: dclog
|
||||
PLUGIN_REPO: jcdenis/dcLog
|
||||
PLUGIN_ENV: DC_DOCKER_PLUGIN_DCLOG
|
||||
|
||||
jobs:
|
||||
version:
|
||||
name: Check versions
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
outputs:
|
||||
distant: ${{ steps.distant.outputs.version }}
|
||||
local: ${{ steps.local.outputs.version }}
|
||||
newer: ${{ steps.compare.outputs.newer }}
|
||||
steps:
|
||||
- name: Read distant version
|
||||
id: repository
|
||||
uses: oprypin/find-latest-tag@v1.1.2
|
||||
with:
|
||||
repository: ${{ env.PLUGIN_REPO }}
|
||||
prefix: 'v'
|
||||
- name: Parse distant version
|
||||
id: distant
|
||||
run: |
|
||||
version=${{ steps.repository.outputs.tag }}
|
||||
echo "version=${version:1}" >> $GITHUB_OUTPUT
|
||||
- name: Check out local repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Parse local version
|
||||
id: local
|
||||
run: |
|
||||
version=$(sed -n "s/\s*${{ env.PLUGIN_ENV }}=\(.*\)\s\(.*\)/\1/p" ./Dockerfile)
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
- name: Compare version
|
||||
id: compare
|
||||
run: |
|
||||
echo '* Distant: ${{ steps.distant.outputs.version }}' >> $GITHUB_STEP_SUMMARY
|
||||
echo '* Local: ${{ steps.local.outputs.version }}' >> $GITHUB_STEP_SUMMARY
|
||||
function version { echo "$@" | awk -F. '{ printf("%d%04d%03d\n", $1,$2,$3); }'; }
|
||||
if [ $(version '${{ steps.distant.outputs.version }}') -gt $(version '${{ steps.local.outputs.version }}') ]; then
|
||||
echo '* Plugin ${{ env.PLUGIN_NAME }} has newer version ${{ steps.message.outputs.message }}' >> $GITHUB_STEP_SUMMARY
|
||||
echo "newer=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo '* Plugin ${{ env.PLUGIN_NAME }} is up to date' >> $GITHUB_STEP_SUMMARY
|
||||
echo "newer=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
update:
|
||||
needs: version
|
||||
name: Update dockerfile
|
||||
if: (needs.version.outputs.newer == 'true')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Set message
|
||||
id: message
|
||||
run: |
|
||||
message=$'Bump ${{ env.PLUGIN_NAME }} from ${{ needs.version.outputs.local }} to ${{ needs.version.outputs.distant }}'
|
||||
echo "message=${message}" >> $GITHUB_OUTPUT
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Edit file
|
||||
run: |
|
||||
sed -i "s/${{ env.PLUGIN_ENV }}=${{ needs.version.outputs.local }}/${{ env.PLUGIN_ENV }}=${{ needs.version.outputs.distant }}/g" ./Dockerfile
|
||||
- name: Commit change
|
||||
uses: EndBug/add-and-commit@v9.1.4
|
||||
with:
|
||||
default_author: github_actions
|
||||
message: ${{ steps.message.outputs.message }}
|
||||
- name: summary
|
||||
run: echo '* ${{ steps.message.outputs.message }}' >> $GITHUB_STEP_SUMMARY
|
81
.github/workflows/bump_sysInfo.yml
vendored
Normal file
81
.github/workflows/bump_sysInfo.yml
vendored
Normal file
|
@ -0,0 +1,81 @@
|
|||
name: Check plugin sysInfo
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '35 23 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
PLUGIN_NAME: sysInfo
|
||||
PLUGIN_REPO: franck-paul/sysInfo
|
||||
PLUGIN_ENV: DC_DOCKER_PLUGIN_SYSINFO
|
||||
|
||||
jobs:
|
||||
version:
|
||||
name: Check versions
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
outputs:
|
||||
distant: ${{ steps.distant.outputs.version }}
|
||||
local: ${{ steps.local.outputs.version }}
|
||||
newer: ${{ steps.compare.outputs.newer }}
|
||||
steps:
|
||||
- name: Read distant version
|
||||
id: repository
|
||||
uses: oprypin/find-latest-tag@v1.1.2
|
||||
with:
|
||||
repository: ${{ env.PLUGIN_REPO }}
|
||||
- name: Parse distant version
|
||||
id: distant
|
||||
run: |
|
||||
version=${{ steps.repository.outputs.tag }}
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
- name: Check out local repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Parse local version
|
||||
id: local
|
||||
run: |
|
||||
version=$(sed -n "s/\s*${{ env.PLUGIN_ENV }}=\(.*\)\s\(.*\)/\1/p" ./Dockerfile)
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
- name: Compare version
|
||||
id: compare
|
||||
run: |
|
||||
echo '* Distant: ${{ steps.distant.outputs.version }}' >> $GITHUB_STEP_SUMMARY
|
||||
echo '* Local: ${{ steps.local.outputs.version }}' >> $GITHUB_STEP_SUMMARY
|
||||
function version { echo "$@" | awk -F. '{ printf("%d%04d%03d\n", $1,$2,$3); }'; }
|
||||
if [ $(version '${{ steps.distant.outputs.version }}') -gt $(version '${{ steps.local.outputs.version }}') ]; then
|
||||
echo '* Plugin ${{ env.PLUGIN_NAME }} has newer version ${{ steps.message.outputs.message }}' >> $GITHUB_STEP_SUMMARY
|
||||
echo "newer=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo '* Plugin ${{ env.PLUGIN_NAME }} is up to date' >> $GITHUB_STEP_SUMMARY
|
||||
echo "newer=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
update:
|
||||
needs: version
|
||||
name: Update dockerfile
|
||||
if: (needs.version.outputs.newer == 'true')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Set message
|
||||
id: message
|
||||
run: |
|
||||
message=$'Bump ${{ env.PLUGIN_NAME }} from ${{ needs.version.outputs.local }} to ${{ needs.version.outputs.distant }}'
|
||||
echo "message=${message}" >> $GITHUB_OUTPUT
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Edit file
|
||||
run: |
|
||||
sed -i "s/${{ env.PLUGIN_ENV }}=${{ needs.version.outputs.local }}/${{ env.PLUGIN_ENV }}=${{ needs.version.outputs.distant }}/g" ./Dockerfile
|
||||
- name: Commit change
|
||||
uses: EndBug/add-and-commit@v9.1.4
|
||||
with:
|
||||
default_author: github_actions
|
||||
message: ${{ steps.message.outputs.message }}
|
||||
- name: summary
|
||||
run: echo '* ${{ steps.message.outputs.message }}' >> $GITHUB_STEP_SUMMARY
|
116
Dockerfile
116
Dockerfile
|
@ -5,24 +5,35 @@
|
|||
# Alpine
|
||||
##
|
||||
|
||||
# Use latest Alpine docker release
|
||||
# Use fix Alpine docker release
|
||||
FROM alpine:3.21.0
|
||||
|
||||
# Select Dotclear release canal (stable | unstable)
|
||||
ARG CANAL stable
|
||||
|
||||
# Set environment variables
|
||||
ENV DC_DOCKER_CANAL=$CANAL \
|
||||
DC_DOCKER_PHP=php84 \
|
||||
DC_DOCKER_PLUGIN_DOTCLEARWATCH=0.9.3 \
|
||||
DC_DOCKER_PLUGIN_DCLOG=1.7.3 \
|
||||
DC_DOCKER_PLUGIN_SYSINFO=10.4 \
|
||||
DC_RC_PATH=/var/www/dotclear/config.php \
|
||||
DC_PLUGINS_ROOT=/var/www/dotclear/plugins \
|
||||
DC_TPL_CACHE=/var/www/dotclear/cache \
|
||||
DC_VAR=/var/www/dotclear/var
|
||||
|
||||
# Image label
|
||||
LABEL "org.opencontainers.image.authors"="Jean-Christian Paul Denis" \
|
||||
"org.opencontainers.image.source"="https://github.com/JcDenis/docker-dotclear" \
|
||||
"org.opencontainers.image.description"="Dotclear docker image $DC_DOCKER_CANAL" \
|
||||
"org.opencontainers.image.licenses"="AGPL-3.0"
|
||||
|
||||
# Set system timezone
|
||||
RUN echo "UTC" > /etc/timezone
|
||||
|
||||
# Select Dotclear release canal (stable | unstable)
|
||||
ARG CANAL stable
|
||||
ENV CNL_DOTCLEAR=$CANAL
|
||||
|
||||
# Create user
|
||||
RUN adduser -D -g 'www' www
|
||||
|
||||
# Image label
|
||||
LABEL "org.opencontainers.image.authors"="Jean-Christian Paul Denis"
|
||||
LABEL "org.opencontainers.image.source"="https://github.com/JcDenis/docker-dotclear"
|
||||
LABEL "org.opencontainers.image.description"="Dotclear docker image $CNL_DOTCLEAR"
|
||||
LABEL "org.opencontainers.image.licenses"="AGPL-3.0"
|
||||
|
||||
##
|
||||
# Nginx
|
||||
|
@ -46,49 +57,47 @@ COPY etc/snippets_subfolder.conf /etc/nginx/snippets/snippets_subfolder.conf
|
|||
COPY etc/snippets_subdomain.conf /etc/nginx/snippets/snippets_subdomain.conf
|
||||
COPY etc/snippets_common.conf /etc/nginx/snippets/snippets_common.conf
|
||||
|
||||
# Fix vuln alpine/curl 8.11.0-r2
|
||||
# Fix vuln alpine 3.21.0 : curl 8.11.0-r2 => 8.11-r0
|
||||
RUN apk upgrade curl
|
||||
|
||||
|
||||
##
|
||||
# PHP
|
||||
##
|
||||
|
||||
# Try to bypass Alpine Linux iconv bug
|
||||
#RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ gnu-libiconv
|
||||
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.12/community/ gnu-libiconv=1.15-r2
|
||||
ENV LD_PRELOAD=/usr/lib/preloadable_libiconv.so
|
||||
|
||||
# Use PHP 8.3 release
|
||||
ENV VER_PHP=php83
|
||||
|
||||
# Install PHP required packages
|
||||
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}-pgsql \
|
||||
${VER_PHP}-opcache \
|
||||
${VER_PHP}-dom \
|
||||
${VER_PHP}-xml \
|
||||
${VER_PHP}-simplexml \
|
||||
${VER_PHP}-zip \
|
||||
${VER_PHP}-pdo_sqlite
|
||||
${DC_DOCKER_PHP}-common \
|
||||
${DC_DOCKER_PHP}-cli \
|
||||
${DC_DOCKER_PHP}-fpm \
|
||||
${DC_DOCKER_PHP}-session \
|
||||
${DC_DOCKER_PHP}-curl \
|
||||
${DC_DOCKER_PHP}-gd \
|
||||
${DC_DOCKER_PHP}-gmp \
|
||||
${DC_DOCKER_PHP}-exif \
|
||||
${DC_DOCKER_PHP}-tidy \
|
||||
${DC_DOCKER_PHP}-intl \
|
||||
${DC_DOCKER_PHP}-json \
|
||||
${DC_DOCKER_PHP}-mbstring \
|
||||
${DC_DOCKER_PHP}-iconv \
|
||||
${DC_DOCKER_PHP}-gettext \
|
||||
${DC_DOCKER_PHP}-mysqli \
|
||||
${DC_DOCKER_PHP}-pgsql \
|
||||
${DC_DOCKER_PHP}-opcache \
|
||||
${DC_DOCKER_PHP}-dom \
|
||||
${DC_DOCKER_PHP}-xml \
|
||||
${DC_DOCKER_PHP}-simplexml \
|
||||
${DC_DOCKER_PHP}-zip \
|
||||
${DC_DOCKER_PHP}-pdo_sqlite
|
||||
|
||||
# Copy PHP configuration
|
||||
COPY etc/${CNL_DOTCLEAR}-php.ini /etc/${VER_PHP}/php.ini
|
||||
COPY etc/php-fpm.conf /etc/${VER_PHP}/php-fpm.d/www.conf
|
||||
COPY etc/${DC_DOCKER_CANAL}-php.ini /etc/${DC_DOCKER_PHP}/php.ini
|
||||
COPY etc/php-fpm.conf /etc/${DC_DOCKER_PHP}/php-fpm.d/www.conf
|
||||
|
||||
|
||||
##
|
||||
# Dotclear
|
||||
|
@ -96,8 +105,8 @@ COPY etc/php-fpm.conf /etc/${VER_PHP}/php-fpm.d/www.conf
|
|||
|
||||
# Download latest Dotclear version
|
||||
RUN curl -fsSL -o versions.xml "http://download.dotclear.org/versions.xml" \
|
||||
&& curl -fsSL -o dotclear.zip $(xmllint --xpath "//release[@name='$CNL_DOTCLEAR']/@href" versions.xml | awk -F'[="]' '!/>/{print $(NF-1)}') \
|
||||
&& echo "$(xmllint --xpath "//release[@name='$CNL_DOTCLEAR']/@checksum" versions.xml | awk -F'[="]' '!/>/{print $(NF-1)}') dotclear.zip" | md5sum -c - \
|
||||
&& curl -fsSL -o dotclear.zip $(xmllint --xpath "//release[@name='$DC_DOCKER_CANAL']/@href" versions.xml | awk -F'[="]' '!/>/{print $(NF-1)}') \
|
||||
&& echo "$(xmllint --xpath "//release[@name='$DC_DOCKER_CANAL']/@checksum" versions.xml | awk -F'[="]' '!/>/{print $(NF-1)}') dotclear.zip" | md5sum -c - \
|
||||
&& mkdir -p /usr/src/dotclear \
|
||||
&& unzip -d /usr/src dotclear.zip \
|
||||
&& rm dotclear.zip
|
||||
|
@ -105,49 +114,36 @@ RUN curl -fsSL -o versions.xml "http://download.dotclear.org/versions.xml" \
|
|||
# Create predefined www structure
|
||||
COPY www /var/lib/dotclear
|
||||
|
||||
# These variables are only used for first install, see inc/config.php, from dotclear 2.32
|
||||
# Custom path for dotclear config file
|
||||
ENV DC_RC_PATH=/var/www/dotclear/config.php
|
||||
# Directory of third party plugins
|
||||
ENV DC_PLUGINS_ROOT=/var/www/dotclear/plugins
|
||||
# Directory for template cache files
|
||||
ENV DC_TPL_CACHE=/var/www/dotclear/cache
|
||||
# Directory for dotclear var
|
||||
ENV DC_VAR=/var/www/dotclear/var
|
||||
|
||||
##
|
||||
# Plugins
|
||||
##
|
||||
|
||||
# DotclearWatch
|
||||
ENV VER_PLUGIN_DW=0.9.3
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/JcDenis/DotclearWatch/releases/download/v$VER_PLUGIN_DW/plugin-DotclearWatch.zip" \
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/JcDenis/DotclearWatch/releases/download/v$DC_DOCKER_PLUGIN_DOTCLEARWATCH/plugin-DotclearWatch.zip" \
|
||||
&& mkdir -p /var/lib/dotclear/plugins/DotclearWatch \
|
||||
&& unzip -d /var/lib/dotclear/plugins plugin.zip \
|
||||
&& rm plugin.zip
|
||||
|
||||
# dcLog
|
||||
ENV VER_PLUGIN_DL=1.7.3
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/JcDenis/dcLog/releases/download/v$VER_PLUGIN_DL/plugin-dcLog.zip" \
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/JcDenis/dcLog/releases/download/v$DC_DOCKER_PLUGIN_DCLOG/plugin-dcLog.zip" \
|
||||
&& mkdir -p /var/lib/dotclear/plugins/dcLog \
|
||||
&& unzip -d /var/lib/dotclear/plugins plugin.zip \
|
||||
&& rm plugin.zip
|
||||
|
||||
# sysInfo
|
||||
ENV VER_PLUGIN_SI=10.4
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/franck-paul/sysInfo/releases/download/$VER_PLUGIN_SI/plugin-sysInfo-$VER_PLUGIN_SI.zip" \
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/franck-paul/sysInfo/releases/download/$DC_DOCKER_PLUGIN_SYSINFO/plugin-sysInfo-$DC_DOCKER_PLUGIN_SYSINFO.zip" \
|
||||
&& mkdir -p /var/lib/dotclear/plugins/sysInfo \
|
||||
&& unzip -d /var/lib/dotclear/plugins plugin.zip \
|
||||
&& rm plugin.zip
|
||||
|
||||
# Fix ownership
|
||||
RUN chown -R www:www /var/lib/dotclear /usr/src/dotclear
|
||||
|
||||
|
||||
##
|
||||
# END
|
||||
##
|
||||
|
||||
# Fix ownership
|
||||
RUN chown -R www:www /var/lib/dotclear /usr/src/dotclear
|
||||
|
||||
# Docker container uses port 80
|
||||
EXPOSE 80
|
||||
|
||||
|
|
67
README.md
67
README.md
|
@ -11,11 +11,16 @@
|
|||
|
||||
## 1. THE SHORT WAY
|
||||
|
||||
In your futur server, with Docker compose installed, execute:
|
||||
In your futur server, with Docker installed, execute:
|
||||
|
||||
docker run -d --name dotclear -p 80:80 -v dotclear:/var/www/dotclear
|
||||
|
||||
or with Docker compose installed, execute:
|
||||
|
||||
curl -fsSL -o docker-compose.yaml https://raw.githubusercontent.com/JcDenis/docker-dotclear/refs/heads/master/docker-compose.yaml && docker-compose up -d
|
||||
|
||||
|
||||
|
||||
## 2. WHAT IS DOTCLEAR
|
||||
|
||||
Dotclear is an open-source web publishing software.
|
||||
|
@ -32,8 +37,9 @@ tool allowing anyone to publish on the web, regardless of their technical skills
|
|||
This repository contains all features to build or run Dotclear on a Docker environment.
|
||||
It is hightly based on work from [darknao](https://github.com/darknao/docker-dotclear).
|
||||
|
||||
* Dotclear docker images are avaialable at [Docker hub](https://hub.docker.com/r/jcpd/docker-dotclear) or [Github registry](https://github.com/JcDenis/docker-dotclear/pkgs/container/docker-dotclear)
|
||||
* Dotclear docker sources are avaialable at [Github repository](https://github.com/JcDenis/docker-dotclear)
|
||||
* Dotclear docker images are available at [Docker hub](https://hub.docker.com/r/jcpd/docker-dotclear) or [Github registry](https://github.com/JcDenis/docker-dotclear/pkgs/container/docker-dotclear)
|
||||
* Dotclear docker sources are available at [Github repository](https://github.com/JcDenis/docker-dotclear)
|
||||
* Dotclear docker helps (french) are available at [Doclear Watch Blog](https://docker.dotclear.watch)
|
||||
|
||||
|
||||
### 3.1 TAGS
|
||||
|
@ -68,13 +74,12 @@ Or to build image from unstable canal, from the Dokerfile path, execute:
|
|||
Builds should support:
|
||||
|
||||
* postgresql and mysql and sqlite database
|
||||
* linux/386,linux/amd64,linux/arm64,linux/arm/V7 plateforms
|
||||
* linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x (and more) plateforms
|
||||
* docker container healthcheck
|
||||
|
||||
|
||||
### 3.3 DOCKER
|
||||
|
||||
|
||||
#### 3.3.1 Exemple of a docker compose file with a mariadb database
|
||||
|
||||
Create and edit a **docker-compose.yaml** file and put into it this contents :
|
||||
|
@ -284,25 +289,59 @@ To upgrade Dotclear to next version it is recommanded to pull latest image and r
|
|||
or use Dotclear buitin update system but themes wiil not be updated.
|
||||
|
||||
|
||||
### 4. TODO
|
||||
## 4. TODO
|
||||
|
||||
* Add better cache management. From another container or from Dotclear container.
|
||||
* Add mail support.
|
||||
|
||||
|
||||
### 5. CONTRIBUTING
|
||||
## 5. SECURITY
|
||||
|
||||
* Nginx master process runs as root and set uid/gid to user www
|
||||
* PHP-FPM master process runs as root and set uid/gid to user www
|
||||
* Docker image entrypoint runs as root and set runuser to www at its end
|
||||
* Dotclear application files are chown to user www
|
||||
|
||||
For security report see [SECURITY file](/SECURITY.md) or open a ticket on github repository.
|
||||
|
||||
|
||||
## 6. CONTRIBUTING
|
||||
|
||||
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.
|
||||
|
||||
|
||||
### 6. LICENSE
|
||||
## 7. LICENSES
|
||||
|
||||
Copyright Jean-Christian Paul Denis
|
||||
AGPL-v3 <https://www.gnu.org/licenses/agpl-3.0.html>
|
||||
Many licenses are involved in there, from files in repository to those from softwares used in final Docker image.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Dotclear software is licensed under AGPL-3, Copyright Olivier Meunier & Association Dotclear
|
||||
### 7.1 DOCKER-DOTCLEAR REPOSITORY FILES
|
||||
|
||||
All files in docker-dotclear repository are licensed under AGPL-3, Copyright (c) Jean-Christian Paul Denis.
|
||||
|
||||
Copyright (c) Jean-Christian Paul Denis
|
||||
AGPL-v3 <https://www.gnu.org/licenses/agpl-3.0.html>
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
### 7.2 LINUX ALPINE
|
||||
|
||||
Linux Alpine operating system in these final Docker images is licensed under MIT License, Copyright (c) 2019 Natanael Copa.
|
||||
|
||||
|
||||
### 7.3 NGINX
|
||||
|
||||
NGINX web server in these final Docker images is licensed under 2-clause BSD-like license, Copyright (c) 2002-2021 Igor Sysoev, 2011-2024 Nginx, Inc.
|
||||
|
||||
|
||||
### 7.4 PHP
|
||||
|
||||
PHP hypertext preprocessor in these final Docker images is licensed under the PHP License v3.01, copyright (c) the PHP Group.
|
||||
|
||||
|
||||
### 7.5 DOTCLEAR
|
||||
|
||||
Dotclear software present in these final Docker images is licensed under AGPL-v3, Copyright (c) Olivier Meunier & Association Dotclear.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# jcpd/docker-dotclear:latest
|
||||
# Docker compose file exemple for latest Dotclear release.
|
||||
# Using docker volumes and 2 containers, one for blog web server and one for the database
|
||||
volumes:
|
||||
dc_app:
|
||||
dc_db:
|
||||
|
@ -32,8 +33,8 @@ services:
|
|||
ports:
|
||||
- 80:80
|
||||
depends_on:
|
||||
dc_db: # MYSQL database service
|
||||
condition: service_healthy # Waiting for database ready
|
||||
dc_db:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DC_DBDRIVER: mysqlimb4
|
||||
DC_DBHOST: dc_db
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
set -e
|
||||
|
||||
# Read image version
|
||||
if [ "$CNL_DOTCLEAR" == "stable" ]; then
|
||||
if [ "$DC_DOCKER_CANAL" == "stable" ]; then
|
||||
# stable = x.xx.x => x.xx.x
|
||||
export COMPARE_HAYSTACK="s/^\s*\"release_version\":\s*\"\(.*\)\",/\1/p"
|
||||
else
|
||||
|
@ -65,12 +65,13 @@ echo >&2 "Updating Dotclear common themes..."
|
|||
cp -rf /var/www/dotclear/app/themes/* /var/www/dotclear/themes
|
||||
|
||||
# DEBUG mode for non stable releases
|
||||
if [ "$CNL_DOTCLEAR" == "stable" ]; then
|
||||
if [ "$DC_DOCKER_CANAL" == "stable" ]; then
|
||||
echo >&2 "Disabling Dotclear DEBUG mode"
|
||||
sed -i -e "s/ \/\/\*== DC_DEBUG ==/ \/\*== DC_DEBUG ==/g" /var/www/dotclear/app/src/Config.php
|
||||
else
|
||||
echo >&2 "Enabling Dotclear DEBUG mode"
|
||||
echo >&2 "Enabling Dotclear DEBUG mode and DEV mode"
|
||||
sed -i -e "s/ \/\*== DC_DEBUG ==/ \/\/\*== DC_DEBUG ==/g" /var/www/dotclear/app/src/Config.php
|
||||
sed -i -e "s/'DC_DEV', false/'DC_DEV', true/g" /var/www/dotclear/app/src/Config.php
|
||||
fi
|
||||
|
||||
# Various cleanup. Sorry not sorry.
|
||||
|
@ -91,12 +92,12 @@ echo >&2 '┌──'
|
|||
echo >&2 "│ Summary: "
|
||||
echo >&2 "│ ◦ Alpine $(cat /etc/alpine-release)"
|
||||
echo >&2 "│ ◦ Nginx $(nginx -v 2>&1 | sed 's/nginx version: nginx\///')"
|
||||
echo >&2 "│ ◦ PHP $(php83 -r "echo PHP_VERSION;")"
|
||||
echo >&2 "│ ◦ PHP $(php84 -r "echo PHP_VERSION;")"
|
||||
echo >&2 "│ ◦ Dotclear ${VERSION_INSTALLED}"
|
||||
echo >&2 '└──'
|
||||
|
||||
# Start web server
|
||||
php-fpm83 -D # FPM must start first in daemon mode
|
||||
php-fpm84 -D # FPM must start first in daemon mode
|
||||
nginx # Then nginx in no daemon mode
|
||||
|
||||
# Switch from user root to wwww
|
||||
|
|
|
@ -104,9 +104,9 @@ session.referer_check =
|
|||
session.cache_limiter = nocache
|
||||
session.cache_expire = 180
|
||||
session.use_trans_sid = 0
|
||||
session.sid_length = 26
|
||||
#session.sid_length = 26
|
||||
session.trans_sid_tags = "a=href,area=href,frame=src,form="
|
||||
session.sid_bits_per_character = 5
|
||||
#session.sid_bits_per_character = 5
|
||||
|
||||
[opcache]
|
||||
opcache.enable=1
|
||||
|
|
|
@ -104,9 +104,9 @@ session.referer_check =
|
|||
session.cache_limiter = nocache
|
||||
session.cache_expire = 180
|
||||
session.use_trans_sid = 0
|
||||
session.sid_length = 26
|
||||
#session.sid_length = 26
|
||||
session.trans_sid_tags = "a=href,area=href,frame=src,form="
|
||||
session.sid_bits_per_character = 5
|
||||
#session.sid_bits_per_character = 5
|
||||
|
||||
[opcache]
|
||||
opcache.enable=1
|
||||
|
|
|
@ -6,7 +6,7 @@ services:
|
|||
restart: unless-stopped
|
||||
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
|
||||
volumes:
|
||||
- dcstable/db:/var/lib/mysql
|
||||
- dcstable_db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: dotclear_root
|
||||
MYSQL_DATABASE: dotclear_db
|
||||
|
@ -24,7 +24,7 @@ services:
|
|||
container_name: dcstableapp
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- dcstable/app:/var/www/dotclear
|
||||
- dcstable_app:/var/www/dotclear
|
||||
ports:
|
||||
- 80:80
|
||||
depends_on:
|
||||
|
@ -40,4 +40,5 @@ services:
|
|||
DC_ADMINMAILFROM: contact@exemple.com
|
||||
|
||||
volumes:
|
||||
dcstable:
|
||||
dcstable_db:
|
||||
dcstable_app:
|
|
@ -10,7 +10,7 @@ services:
|
|||
POSTGRES_DB: dcstable_db
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
volumes:
|
||||
- dcstable:/var/lib/postgresql/data
|
||||
- dcstable_db:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}" ]
|
||||
interval: 1s
|
||||
|
@ -24,7 +24,7 @@ services:
|
|||
ports:
|
||||
- 80:80
|
||||
volumes:
|
||||
- dcstable/app:/var/www/dotclear
|
||||
- dcstable_app:/var/www/dotclear
|
||||
depends_on:
|
||||
dcstabledb:
|
||||
condition: service_healthy
|
||||
|
@ -38,4 +38,5 @@ services:
|
|||
DC_ADMINMAILFROM: contact@exemple.com
|
||||
|
||||
volumes:
|
||||
dcstable:
|
||||
dcstable_db:
|
||||
dcstable_app:
|
Loading…
Reference in a new issue