Хочу собрать свою собственную установку DokuWiki для Ubuntu 18.04 Server amd64 дабы возможно в последствии приобщиться к использованию Docker на своих серверах. Не знаю, может и понравится, т.к. сейчас беру систему и прорабатываю не спеша установку и настройка сервиса или несколько сервисов на одной системе. Не люблю спешить — доверяю только себе и не понимаю людей которые торопятся все использовать самое последнее, а потом разгребают грабли.

Не претендую на совершенство — я учусь.

ekzorchik@srv-bionic:~$ mkdir dokuwiki

ekzorchik@srv-bionic:~$ cd dokuwiki

ekzorchik@srv-bionic:~/dokuwiki$ nano Dockerfile

FROM ubuntu:18.04

MAINTAINER Ollo Alexander <support@ekzorchik.ru>

ENV TIMEZONE Europe/Moscow

ENV phpversion 7.2

ENV data dwdata

RUN rm -Rf /var/lib/apt/lists

RUN apt-get update && apt-get upgrade -y

LABEL Configure System

RUN rm -f /etc/localtime && \

ln -s /usr/share/zoneinfo/$TIMEZONE /etc/localtime

LABEL Install Ningx

RUN apt-get install gcc make perl nginx wget php-fpm php-xml curl -y

RUN wget -q "https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz" && \

mkdir -p /var/www/html/dokuwiki

RUN tar zxf "dokuwiki-stable.tgz" --strip 1 -C /var/www/html/dokuwiki

RUN rm -f "dokuwiki-stable.tgz"

RUN chown -R www-data:www-data /var/www/html/dokuwiki

RUN chmod -R 755 /var/www/html/dokuwiki

LABEL Configure nginx

ADD dokuwiki /etc/nginx/sites-available/dokuwiki

RUN ln -sf /etc/nginx/sites-available/dokuwiki /etc/nginx/sites-enabled/dokuwiki && \

mkdir -p /var/log/nginx/dokuwiki && \

chown -R www-data:adm /var/log/nginx/dokuwiki && \

unlink /etc/nginx/sites-available/default && \

unlink /etc/nginx/sites-enabled/default && \

rm -f /var/www/html/index.nginx-debian.html

RUN sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/$phpversion/fpm/php.ini

RUN sed -i 's/max_execution_time = 30/max_execution_time = 360/' /etc/php/$phpversion/fpm/php.ini

RUN sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 100M/' /etc/php/$phpversion/fpm/php.ini

RUN sed -i 's/;security.limit_extensions/security.limit_extensions/' /etc/php/$phpversion/fpm/pool.d/www.conf

RUN sed -i 's/;listen.mode/listen.mode/' /etc/php/$phpversion/fpm/pool.d/www.conf

RUN sed -i 's#^;date\.timezone[[:space:]]=.*$#date.timezone = "Europe/Moscow"#' /etc/php/$phpversion/fpm/php.ini

LABEL Security DOKUWIKI

RUN mv /var/www/html/dokuwiki/data/ /var/www/html/dokuwiki/$data && \

find /var/www/html/dokuwiki/$data -type f -exec chmod 0644 {} \; && \

find /var/www/html/dokuwiki/conf -type f -exec chmod 0644 {} \; && \

find /var/www/html/dokuwiki/$data -type d -exec chmod 0755 {} \; && \

find /var/www/html/dokuwiki/conf -type d -exec chmod 0755 {} \;

LABEL Configure DOKUWIKI

COPY local.php /var/www/html/dokuwiki/conf/local.php

COPY users.auth.php /var/www/html/dokuwiki/conf/users.auth.php

COPY acl.auth.php /var/www/html/dokuwiki/conf/acl.auth.php

ADD ./config/run.sh /run.sh

RUN chmod 755 /run.sh

CMD ["/run.sh"]

EXPOSE 80

ekzorchik@srv-bionic:~/dokuwiki$ nano acl.auth.php

# acl.auth.php

# <?php exit()?>

# Don't modify the lines above

#

# Access Control Lists

#

# Auto-generated by install script+

−

# Date: Sun, 03 Feb 2019 09:22:38 +0000

* @ALL 0

* @user 8

ekzorchik@srv-bionic:~/dokuwiki$ nano dokuwiki

server {

listen 80;

autoindex off;

client_max_body_size 15M;

client_body_buffer_size 128k;

root /var/www/html/dokuwiki;

index doku.php;

access_log /var/log/nginx/dokuwiki/access.log;

error_log /var/log/nginx/dokuwiki/error.log;

server_tokens off;

location / {

try_files $uri $uri/ @dokuwiki;

}

location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ {

expires 30d;

}

location = /robots.txt { access_log off; log_not_found off; }

location = /favicon.ico { access_log off; log_not_found off; }

location ~ /\. { access_log off; log_not_found off; deny all; }

location ~ ~$ { access_log off; log_not_found off; deny all; }

location @dokuwiki {

rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;

rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;

rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;

rewrite ^/(.*) /doku.php?id=$1 last;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

}

location ~ /($data|conf|bin|inc)/ {

deny all;

}

location ~ /\.ht {

deny all;

}

}

ekzorchik@srv-bionic:~/dokuwiki$ nano local.php

<?php

/**

* Dokuwiki's Main Configuration File - Local Settings

* Auto-generated by install script

* Date: Sun, 03 Feb 2019 09:22:38 +0000

*/

$conf['title'] = 'tips_db_home';

$conf['lang'] = 'ru';

$conf['license'] = '0';

$conf['useacl'] = 1;

$conf['superuser'] = '@admin';

$conf['disableactions'] = 'register';

$conf['savedir']='/dwdata';

$conf['disableactions'] = 'register,check';

$conf['subscribers'] = 1;

$conf['mailfrom'] = 'support@ekzorchik.ru';

ekzorchik@srv-bionic:~/dokuwiki$ nano users.auth.php

# users.auth.php

# <?php exit()?>

# Don't modify the lines above

#

# Userfile

#

# Format:

#

# login:passwordhash:Real Name:email:groups,comma,separated

admin:1$4fd0ad31$.cId7p1uxI4a.RcrH81On0:ekzorchik:support@ekzorchik.ru:admin,user

ekzorchik@srv-bionic:~/dokuwiki$ mkdir config

ekzorchik@srv-bionic:~/dokuwiki$ nano config/run.sh

#!/bin/bash

/etc/init.d/php7.2-fpm start

nginx -g 'daemon off;'

Создаю образ:

ekzorchik@srv-bionic:~/dokuwiki$ docker build -t ekzorchik/dokuwiki .

Successfully built 88f40f8b7412

Successfully tagged ekzorchik/dokuwiki:latest

ekzorchik@srv-bionic:~/dokuwiki$

Запускаю сформированный образ:

ekzorchik@srv-bionic:~/dokuwiki$ docker run -it -p 8080:80 ekzorchik/dokuwiki

сессию не закрываем

Покуда сессия не закрыта можно подключиться внутри контейнера:

ekzorchik@srv-bionic:~$ docker run -it ekzorchik/dokuwiki bash

root@a20d098f4c14:/#

Открываю еще одну сессию с этой системой и смотрю, какой сервис прослушивается порт 8080:

ekzorchik@srv-bionic:~$ sudo netstat -tulpn | grep docker

tcp6 0 0 :::8080 :::* LISTEN 29064/docker-proxy

ekzorchik@srv-bionic:~$

После через браузер подключаюсь на порт 8080 системы где развернут Docker и получаю сервис DokuWiki развернутый на Ubuntu 18.04 Server amd64.

Собранная установка Dokuwiki для Docker

Пробую авторизоваться:

  • Логин: admin
  • Пароль: admin

и нажимаю Войти

На заметку: Если необходимо внести изменения сервис, редактируем Dockerfile и заново создаем через build образ.

Как по мне чтобы развернуть сервис в Docker самим все равно нужно пройтись по установке сервиса на обычную систему и разобрать все нюансы, а после уже адаптировать все шаги под конфигурационный файл Dockerfile дабы установка была стандартизирована.

ekzorchik@srv-bionic:~/dokuwiki$ cd ~

ekzorchik@srv-bionic:~$ sudo du -sh /var/lib/docker

1.2G /var/lib/docker

ekzorchik@srv-bionic:~$

Пусть данная заметка будет началом к приобщению использования Docker on Ubuntu 18.04 Server. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.