Using Docker for development WikkaWiki

The following 1 page(s) belong to Wikka-Docker

Wikka-Docker-Faster [Wikka on Docker for the impatient]

Docker logo

Docker is a useful tool for deployment, but also for development too. This article is dedicated to easily show you how use docker for development WikkaWiki (plugins, database, new themes, etc). If you have some previusly experence on docker and WikkaWiki, maybe you only have to check the basic dockerhub WikkaWiki build.

On the other hand, this article don't cover the installation and configuration of docker, the way to install docker is
widely on the web and the docker main page. This article assumes that you have successfully installed docker.

Why use Docker for Development of WikkaWiki?


Wikka

Here’s a few of the reasons why you could use Docker for WikkaWiki development.

How to use Docker for Development?


Work flow

Let's suppose that you want to setup a new development environment for your new plugin, you have to remember that WikkaWiki is a web application (runs over a Web server like Apache) and is build using PHP language, and also WikkaWiki store the data on a Mysql database. This meaning that you have to setup the follows systems for your new develop environment:

This is hard work if you have to generate a new environment every time you want to test a new crazy idea. There is where docker gonna to help you. On the follow items, we gonna to check how to easily setup a new development environment.

Checking a new WikkaWiki release without operation system setup effort.


When you want to evaluate a new release, to see the new features of the system or check the behavior and system requirements:

evaluate a new release
oems@mydockerserver:~/$ docker run --rm -it oems/wikkawiki:v1.3.7


Running on the docker on this way give you the opportunity to check the release 1.3.7, to check which id is using your docker you can use:

get ID
oems@mydockerserver:~/$ docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                    PORTS                                  NAMES
2ba9a0d95d51        oems/wikkawiki:v1.3.7   "/usr/bin/supervisord"   31 seconds ago      Up 28 seconds                                                    admiring_fermi


And then use the inspect docker command to check specific characteristics like network settings of the instance:

check specific characteristics like network
oems@mydockerserver:~/$ docker inspect 2ba9a0d95d51
.....
          "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "985853b847895aecae730901560bffcc5ea42a130dd25358029b74c1eb5c4501",
                    "EndpointID": "a036a000115ccce8c94a205a9739866d1e5dda8692b1a8e69f0aac89f6c377c8",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03"
                }
            }
.....


by last, you can access to the WikkaWiki installation page pointing to http://172.17.0.3 on your browser.

I want to get inside the docker for a quick edit.


You can easily get into the docker for some check specific field using:

get into the docker
oems@mydockerserver:~/$ docker exec -it 2ba9a0d95d51 bash
root@2ba9a0d95d51:/# ps -fea
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:37 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root        60     1  0 14:37 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe
root       251     1  0 14:37 ?        00:00:00 /usr/sbin/apache2 -k start
mysql      420    60  0 14:37 ?        00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --lo
www-data   454   251  0 14:37 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   455   251  0 14:37 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   456   251  0 14:37 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   457   251  0 14:37 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   458   251  0 14:37 ?        00:00:00 /usr/sbin/apache2 -k start
root       595     0  0 14:52 ?        00:00:00 bash
root       610   595  0 14:52 ?        00:00:00 ps -fea


I want to use my own copy of configuration files of WikkaWiki for testing it.


The wikka.config.php file, is a set of configurations options, if you want to check with a specific database or some specific theme, you have to edit this file and run a new configuration.

Testing your wikka.config.php

docker run --rm -it -v $PWD/wikka.config.php:/var/www/html/wikka/wikka.config.php oems/wikkawiki


I want to use my own copy of all PHP and directory's files of WikkaWiki for testing it.


You can copy you own WikkaWiki instance to a specific directory, for example

oems@mydockerserver:~/$ cp -r /var/www/htdocs/wikka wikkawiki
oems@mydockerserver:~/$ ls wikkawiki
3rdparty  badwords.txt.php  docs        handlers  index.php       intranet  libs    localization.php  phpinfo.php  README.md  setup  templates  version.php       wikka.php
actions   config            formatters  images    interwiki.conf  lang      locale  mime_types.txt    plugins      scripts    sql    uploads    wikka.config.php


Then run the instance:

check if the new release is compatible with you
oems@mydockerserver:~/$ docker run --rm -it -v $PWD/wikkawiki/:/var/www/html/wikka/ oems/wikkawiki


This is very useful when you want to check if the new release is compatible with your themes (css styles, js stuff, etc).

I want to use all my own copy of all PHP and directory's files and database WikkaWiki for testing it.


This command runs a database directory, a base directory and even a plugins directory and uploads. All directory's can be shared between dockers instances, except the Mysql directory, because MySql don't accept concurrent multiple instances access, but this is not really a problem if you use btrfs/lvm snapshots.

all option on one
docker run -d -p 80:80 -v $PWD/mysql:/var/lib/mysql -v $PWD/wikka.config.php:/var/www/html/wikka/wikka.config.php -v $PWD/uploads:/var/www/html/wikka/uploads -v $PWD/plugins:/var/www/html/wikka/plugins oems/wikkawiki


FAQs and TODOs


> R: No, is a help to the developers, I hope that in some time the docker, will gonna to be used by all and be approved to be the preferred on the project.

> R: No, the principal goal of this docker is to be a clean and basic base line of WikkaWiki

References:

- [WikkaWiki](http://wikkawiki.org/HomePage) is a flexible, standards-compliant and lightweight wiki engine written in PHP, which uses MySQL to store pages.
- [Why and How to Use Docker for Development](https://medium.com/iron-io-blog/why-and-how-to-use-docker-for-development-a156c1de3b24#.f2hcratjc)
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki