Хочу собрать свою собственную установку 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.
Пробую авторизоваться:
Логин: 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.