Compare commits
16 commits
3dc108f65b
...
ef972f891a
Author | SHA1 | Date | |
---|---|---|---|
ef972f891a | |||
46a4ef9350 | |||
318cf4039e | |||
447edf1168 | |||
11d2848b6c | |||
61f879dd29 | |||
40f5c0f318 | |||
b6b6eed241 | |||
d9719891fa | |||
d06f5c9412 | |||
c6a086f6b0 | |||
52d51ae5c8 | |||
15e24ad19f | |||
02b3321ed6 | |||
3f0f9d957d | |||
cfd685d31a |
5 changed files with 134 additions and 35 deletions
12
.github/workflows/release_stable.yml
vendored
12
.github/workflows/release_stable.yml
vendored
|
@ -24,7 +24,7 @@ jobs:
|
|||
contents: read
|
||||
outputs:
|
||||
version: ${{ steps.dotclear.outputs.version }}
|
||||
exists: ${{ steps.repository.outputs.release-exists }}
|
||||
exists: ${{ steps.repository.outputs.exists }}
|
||||
steps:
|
||||
- name: Install required packages
|
||||
run: curl -sSL https://bit.ly/install-xq | sudo bash
|
||||
|
@ -42,9 +42,9 @@ jobs:
|
|||
|
||||
- name: Check repository releases
|
||||
id: repository
|
||||
uses: insightsengineering/release-existence-action@v1.0.0
|
||||
uses: mukunku/tag-exists-action@v1.6.0
|
||||
with:
|
||||
release-tag: ${{ steps.dotclear.outputs.version }}
|
||||
tag: ${{ steps.dotclear.outputs.version }}
|
||||
|
||||
do_release:
|
||||
name: Create repository release according to Dotclear version
|
||||
|
@ -54,12 +54,16 @@ jobs:
|
|||
needs: check_release
|
||||
if: needs.check_release.outputs.exists == 'false'
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Create repository release
|
||||
id: create_release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ needs.check_release.outputs.version }}
|
||||
name: ${{ needs.check_release.outputs.version }}
|
||||
tag_name: ${{ needs.check_release.outputs.version }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
|
|
23
Dockerfile
23
Dockerfile
|
@ -52,7 +52,7 @@ COPY etc/snippets_common.conf /etc/nginx/snippets/snippets_common.conf
|
|||
# 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
|
||||
ENV LD_PRELOAD=/usr/lib/preloadable_libiconv.so
|
||||
|
||||
# Use PHP 8.3 release
|
||||
ENV VER_PHP=php83
|
||||
|
@ -115,6 +115,27 @@ ENV DC_TPL_CACHE=/var/www/dotclear/cache
|
|||
# Directory for dotclear var
|
||||
ENV DC_VAR=/var/www/dotclear/var
|
||||
|
||||
##
|
||||
# Plugins
|
||||
##
|
||||
|
||||
# DotclearWatch
|
||||
ENV VER_DW=0.9.3
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/JcDenis/DotclearWatch/releases/download/v$VER_DW/plugin-DotclearWatch.zip" \
|
||||
&& mkdir -p /var/lib/dotclear/plugins/DotclearWatch \
|
||||
&& unzip -d /var/lib/dotclear/plugins plugin.zip \
|
||||
&& chown -R www:www /var/lib/dotclear/plugins \
|
||||
&& rm plugin.zip
|
||||
|
||||
# sysInfo
|
||||
ENV VER_SI=9.6
|
||||
RUN curl -fsSL -o plugin.zip "https://github.com/franck-paul/sysInfo/releases/download/$VER_SI/plugin-sysInfo-$VER_SI.zip" \
|
||||
&& mkdir -p /var/lib/dotclear/plugins/sysInfo \
|
||||
&& unzip -d /var/lib/dotclear/plugins plugin.zip \
|
||||
&& chown -R www:www /var/lib/dotclear/plugins \
|
||||
&& rm plugin.zip
|
||||
|
||||
|
||||
##
|
||||
# END
|
||||
##
|
||||
|
|
110
README.md
110
README.md
|
@ -8,13 +8,15 @@
|
|||
![Testing image build](https://github.com/JcDenis/docker-dotclear/actions/workflows/release_testing.yml/badge.svg)
|
||||
![Unstable image build](https://github.com/JcDenis/docker-dotclear/actions/workflows/release_unstable.yml/badge.svg)
|
||||
|
||||
## THE SHORT WAY
|
||||
|
||||
## 1. THE SHORT WAY
|
||||
|
||||
In your futur server, 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
|
||||
|
||||
## WHAT IS DOTCLEAR
|
||||
|
||||
## 2. WHAT IS DOTCLEAR
|
||||
|
||||
Dotclear is an open-source web publishing software.
|
||||
Take control over your blog!
|
||||
|
@ -24,25 +26,28 @@ tool allowing anyone to publish on the web, regardless of their technical skills
|
|||
|
||||
=> https://dotclear.org/
|
||||
|
||||
## WHAT IS DOCKER-DOTCLEAR
|
||||
|
||||
## 3. WHAT IS DOCKER-DOTCLEAR
|
||||
|
||||
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?tab=packages&repo_name=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)
|
||||
|
||||
### TAGS
|
||||
|
||||
Docker image tag is based on __Alpine Linux OS, Nginx server and PHP-FPM language__.
|
||||
It is composed of Dotclear version or release type:
|
||||
### 3.1 TAGS
|
||||
|
||||
Docker images are based on __Alpine Linux OS, Nginx server and PHP-FPM language__.
|
||||
Image tags are composed of Dotclear version or release type:
|
||||
|
||||
* x.x : A given Dotclear version (ex: 2.31.1)
|
||||
* latest : The latest stable Dotclear release
|
||||
* testing: The latest dev of Dotclear stable branch
|
||||
* dev : A Dotclear unstable (nightly) release
|
||||
|
||||
### BUILDS
|
||||
|
||||
### 3.2 BUILDS
|
||||
|
||||
Clone this repository:
|
||||
|
||||
|
@ -66,9 +71,13 @@ Builds should support:
|
|||
* linux/386,linux/amd64,linux/arm64,linux/arm/V7 plateforms
|
||||
* docker container healthcheck
|
||||
|
||||
### DOCKER
|
||||
|
||||
**Exemple of a docker compose file with a mariadb database:**
|
||||
### 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 :
|
||||
|
||||
services:
|
||||
# MYSQL database service
|
||||
|
@ -128,7 +137,10 @@ On first run Dotclear does its installation process and ask you to create a firs
|
|||
On first run you should wait that container download and install required version of Dotclear,
|
||||
this may takes a while...
|
||||
|
||||
**Another exemple with an SQLite database and a single container:**
|
||||
|
||||
#### 3.3.2 Exemple of a docker compose file with an SQLite database and a single container
|
||||
|
||||
Create and edit a **docker-compose.yaml** file and put into it this contents :
|
||||
|
||||
services:
|
||||
dotclear:
|
||||
|
@ -144,15 +156,24 @@ this may takes a while...
|
|||
DC_DBNAME: \var\www\dotclear\sqlite.db
|
||||
DC_ADMINMAILFROM: contact@exemple.com
|
||||
|
||||
or with a simple docker command:
|
||||
Then execute:
|
||||
|
||||
docker-compose up -d
|
||||
|
||||
|
||||
#### 3.3.3 Direct docker run without docker compose
|
||||
|
||||
Exemple with a simple docker command :
|
||||
|
||||
docker run -d --name dotclear -p 80:80 -v dotclear:/var/www/dotclear -e DC_DBDRIVER=sqlite -e DC_DBNAME=/var/www/dotclear/sqlite.db -e DC_ADMINMAILFROM=contact@exemple.com jcpd/docker-dotclear:latest
|
||||
|
||||
SQLite database will be stored in folder \var\www\dotclear
|
||||
|
||||
### BLOG
|
||||
|
||||
__Standard configuration by subfolders__
|
||||
### 3.4 BLOG
|
||||
|
||||
|
||||
#### 3.4.1 Standard configuration by subfolders
|
||||
|
||||
These images use Dotclear URL rewriting in PATH INFO mode.
|
||||
By default URL and path should be corrected by a custom plugin automatically.
|
||||
|
@ -167,7 +188,22 @@ Blogs administration is available at http://localhost/admin
|
|||
When you create a new blog in this configuration,
|
||||
you must use the _blog_id_ with the trailing slash in blog URL setting like http://localhost/blog_id/
|
||||
|
||||
__Standard configuration by subdomains__
|
||||
__Web server configuration__
|
||||
|
||||
To customized web server configuration for subfolders, edit:
|
||||
|
||||
> /var/www/dotclear/app/servers/subfolder.conf
|
||||
|
||||
Original contents looks like:
|
||||
|
||||
server {
|
||||
server_name localhost;
|
||||
include /etc/nginx/snippets/snippets_subfolder.conf;
|
||||
include /etc/nginx/snippets/snippets_common.conf;
|
||||
}
|
||||
|
||||
|
||||
#### 3.4.2 Standard configuration by subdomains
|
||||
|
||||
These images use Dotclear URL rewriting in PATH INFO mode.
|
||||
By default URL and path should be corrected by a custom plugin automatically.
|
||||
|
@ -182,7 +218,28 @@ Blogs administration is available at http://xxx.domain.tld/admin
|
|||
When you create a new blog in this configuration,
|
||||
you must use the _blog_id_ as subdomain in blog URL setting like http://blog_id.domain.tld/
|
||||
|
||||
__Non standard configuration__
|
||||
__Web server configuration__
|
||||
|
||||
To customized web server configuration for subdomains, edit:
|
||||
|
||||
> /var/www/dotclear/app/servers/subdomain.conf
|
||||
|
||||
Original contents looks like:
|
||||
|
||||
server {
|
||||
server_name ~^(?<dc_blog_id>\w*?)?\.?(\w+\.\w+)$;
|
||||
if ($dc_blog_id = '') {
|
||||
set $dc_blog_id default;
|
||||
}
|
||||
if ($dc_blog_id = 'blog') {
|
||||
set $dc_blog_id default;
|
||||
}
|
||||
include /etc/nginx/snippets/snippets_subdomain.conf;
|
||||
include /etc/nginx/snippets/snippets_common.conf;
|
||||
}
|
||||
|
||||
|
||||
#### 3.4.3 Non standard configuration
|
||||
|
||||
Setup nginx server configuration (see bellow):
|
||||
|
||||
|
@ -204,7 +261,8 @@ Then fix public_path and public_url for the blog:
|
|||
* set _public_path_ to the real path on system to public directory of the blog
|
||||
* set _public_url_ to the URL of the public directory of the blog
|
||||
|
||||
### STRUCTURE
|
||||
|
||||
### 3.5 STRUCTURE
|
||||
|
||||
Default root path of this image structure is in __/var/www/dotclear__ with sub folders:
|
||||
|
||||
|
@ -216,23 +274,29 @@ Default root path of this image structure is in __/var/www/dotclear__ with sub f
|
|||
* _themes_ : Dotclear themes directory
|
||||
* _var_ : Dotclear var directory
|
||||
|
||||
### UPGRADE
|
||||
|
||||
To upgrade Dotclear to next version,
|
||||
it is recommanded to pull latest image and restart the docker container
|
||||
### 3.6 UPGRADE
|
||||
|
||||
To upgrade Dotclear to next version it is recommanded to pull latest image and restart the docker container:
|
||||
|
||||
docker pull jcpd/docker-dotclear:latest && docker compose up -d
|
||||
|
||||
or use Dotclear buitin update system but themes wiil not be updated.
|
||||
|
||||
### TODO
|
||||
|
||||
### 4. TODO
|
||||
|
||||
* Add better cache management. From another container or from Dotclear container.
|
||||
* Add mail support.
|
||||
|
||||
### CONTRIBUTING
|
||||
|
||||
### 5. 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.
|
||||
|
||||
### LICENSE
|
||||
|
||||
### 6. LICENSE
|
||||
|
||||
Copyright Jean-Christian Paul Denis
|
||||
AGPL-v3 <https://www.gnu.org/licenses/agpl-3.0.html>
|
||||
|
|
|
@ -16,12 +16,24 @@ fi
|
|||
export COMPARE_IMAGE=$(sed -n "${COMPARE_HAYSTACK}" /usr/src/dotclear/release.json)
|
||||
export VERSION_IMAGE=$(sed -n "s/^\s*\"release_version\":\s*\"\(.*\)\",/\1/p" /usr/src/dotclear/release.json)
|
||||
|
||||
# Simple versions comparison function that works with Dotclear stable versioning
|
||||
function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
|
||||
# Simple versions comparison function that fits all releases
|
||||
function version { echo "$@" | awk -F. '{ printf("%d%04d%03d\n", $1,$2,$3); }'; }
|
||||
|
||||
# Update Docker structure
|
||||
echo >&2 "Updating Docker structure..."
|
||||
cp -Ru /var/lib/dotclear /var/www
|
||||
mkdir -p /var/www/dotclear/app \
|
||||
/var/www/dotclear/blogs \
|
||||
/var/www/dotclear/blogs/default \
|
||||
/var/www/dotclear/cache \
|
||||
/var/www/dotclear/plugins \
|
||||
/var/www/dotclear/servers \
|
||||
/var/www/dotclear/themes \
|
||||
/var/www/dotclear/var
|
||||
# Always replace image plugins
|
||||
cp -rf /var/lib/dotclear/plugins/* /var/www/dotclear/plugins
|
||||
# Copy nginx server conf only if not exists
|
||||
cp -n /var/lib/dotclear/servers/subdomain.conf /var/www/dotclear/servers/
|
||||
cp -n /var/lib/dotclear/servers/subfolder.conf /var/www/dotclear/servers/
|
||||
|
||||
# Check if Dotclear is already on system
|
||||
if ! [ -e index.php -a -e src/App.php ]; then
|
||||
|
@ -50,7 +62,7 @@ fi
|
|||
|
||||
# Update Docker structure
|
||||
echo >&2 "Updating Dotclear common themes..."
|
||||
cp -Ru /var/www/dotclear/app/themes/* /var/www/dotclear/themes
|
||||
cp -rf /var/www/dotclear/app/themes/* /var/www/dotclear/themes
|
||||
|
||||
# DEBUG mode for non stable releases
|
||||
if [ "$CNL_DOTCLEAR" == "stable" ]; then
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
<?php
|
||||
header('Location: /default');
|
Loading…
Reference in a new issue