blob: 0d4d0616891f7499335fa2f51a86829182cf663f [file] [log] [blame]
# TikiWiki Docker Image
TikiWiki is full featured content management system written in PHP. You can
find more useful information at http://tiki.org
## Pulling
```
docker pull tikiwiki/tikiwiki:19.x
```
## Running
### Variables
Some env variables are provided to setup the database, but you can also mount
your configurations files inside container. The env vars and the default values
are listed below and the names are self explanatory.
```
TIKI_DB_VERSION=19
TIKI_DB_HOST='db'
TIKI_DB_USER
TIKI_DB_PASS
TIKI_DB_NAME=tikiwiki
```
### Single container
Example to get a running container below.
```
docker run --rm --name tiki --link mariadb:db \
-e TIKI_DB_USER=tiki \
-e TIKI_DB_PASS=wiki \
-p 80:80 \
-d tikiwiki/tikiwiki
```
### docker-compose
The following creates and start two containers:
1. TikiWiki with por 80 published on host
2. MariaDB instance with the schema `tikiwiki`
```yml
version: '2'
services:
tiki:
image: tikiwiki/tikiwiki:19.x
ports:
- "80:80"
depends_on:
- db
environment:
- TIKI_DB_USER=tiki
- TIKI_DB_PASS=wiki
- TIKI_DB_NAME=tikiwiki
db:
image: mariadb
environment:
- MYSQL_USER=tiki
- MYSQL_PASSWORD=wiki
- MYSQL_DATABASE=tikiwiki
- MYSQL_ROOT_PASSWORD=tkwkiiii
- TERM=dumb
```
### scalable mode with docker-compose
The following recipe makes possible to grow the amount of TikiWiki
containers, so in this way, it is possible to use more resources from
host to handle incoming traffic.
Concerning about this mode:
1. It it not compatible to web installer, so installing database using
command line is needed.
2. It is needed to have a reverse proxy load balancing traffic to TikiWiki
containers.
#### docker-compose.yml
This setup uses `eeacms/haproxy` container as reverse proxy and load balancer and
declare a set of volumes. When new **tiki** containers are created, they will share
the same set of volumes.
```yml
version: '3.7'
services:
haproxy:
image: eeacms/haproxy
depends_on:
- tiki
ports:
- "80:5000"
environment:
BACKENDS: "tiki"
DNS_ENABLED: "true"
LOG_LEVEL: "info"
tiki:
image: tikiwiki/tikiwiki:19.x
depends_on:
- db
deploy:
replicas: 2
environment:
- TIKI_DB_USER=tiki
- TIKI_DB_PASS=wiki
- TIKI_DB_NAME=tikiwiki
volumes:
- tiki_files:/var/www/html/files/
- tiki_img_trackers:/var/www/html/img/trackers/
- tiki_img_wiki_up:/var/www/html/img/wiki_up/
- tiki_img_wiki:/var/www/html/img/wiki/
- tiki_modules_cache:/var/www/html/modules/cache/
- tiki_storage:/var/www/html/storage/
- tiki_temp:/var/www/html/temp/
- tiki_sessions:/var/www/sessions/
db:
image: mariadb
environment:
- MYSQL_USER=tiki
- MYSQL_PASSWORD=wiki
- MYSQL_DATABASE=tikiwiki
- MYSQL_ROOT_PASSWORD=tkwkiiii
- TERM=dumb
volumes:
tiki_files:
tiki_img_trackers:
tiki_img_wiki_up:
tiki_img_wiki:
tiki_modules_cache:
tiki_storage:
tiki_temp:
tiki_sessions:
```
#### Starting containers
First it is needed to copy the YML above in a folder with
a descriptive name, like `example.com`.
Then, inside the folder `example.com`, the following command
starts all container from docker-compose.yml.
```sh
docker-compose up -d
```
After wait all containers to start and the console prompt appears
again, the following command shows the containers running for
docker-compose.yml on folder `example.com`.
```
docker-compose ps
```
The output should be like:
```
Name Command State Ports
------------------------------------------------------------------------------------
examplecom_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
examplecom_haproxy_1 /docker-entrypoint.sh hapr ... Up 0.0.0.0:80->5000/tcp
examplecom_tiki_1 /entrypoint.sh apache2-for ... Up 443/tcp, 80/tcp
```
There is 1 container running for each service (**db**, **haproxy**, **tiki**)
in **example.com** folder.
#### Installing database
There is a command line installer available in tiki folder that should be used
to install the database. **WE CAN NOT USE THE WEB INSTALLER!**. The following
command installs Tiki database
```sh
docker-compose exec tiki php console.php database:install
```
#### Scaling containers
If more Tiki container is wanted, the following command launch new containers.
```sh
docker-compose scale tiki=3
```
Now, the following containers will be listed on `docker-compose ps`:
```sh
Name Command State Ports
------------------------------------------------------------------------------------
examplecom_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
examplecom_haproxy_1 /docker-entrypoint.sh hapr ... Up 0.0.0.0:80->5000/tcp
examplecom_tiki_1 /entrypoint.sh apache2-for ... Up 443/tcp, 80/tcp
examplecom_tiki_2 /entrypoint.sh apache2-for ... Up 443/tcp, 80/tcp
examplecom_tiki_3 /entrypoint.sh apache2-for ... Up 443/tcp, 80/tcp
```