Chitanka Docker
е проект за контейнеризиране на софтуера задвижващ Моята Библиотека и възможността за използването му в micro-services среда. При създаването му е следвана логиката и последователността на инсталиране описана в Автоматичния инсталатор.
С помощта на Docker може да бъде използван под Linux, Windows или Mac на собствен сървър или локален компютър - Docker Desktop.
$ git clone https://github.com/basekat/chitanka-docker
$ cd chitanka-docker/examples/chitanka
... прегледайте docker-compose.yml
!!! ВАЖНО !!! Укажете пътя до content директорията, която ще съдържа архива (~20GB) с всички книги, корици и т.н.
app:
image: basekat/chitanka
restart: always
volumes:
....
- /path/to/content:/var/www/chitanka/web/content !!! ВАЖНО !!!
Уверете се, че пътят то content директорията съществува и правата са 777 или принадлежат на потребител:група 33:33
$ mkdir -p /path/to/content
$ mkdir 777 /path/to/content
OR
$ chown 33:33 /path/to/content
Стартирате
docker-compose up -d
Уверете се, че всички контейнери са стартирани:
# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
chitanka_app_1 /entrypoint.sh php-fpm Up 9000/tcp
chitanka_cron_1 /cron.sh Up 9000/tcp
chitanka_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
chitanka_web_1 /docker-entrypoint.sh ngin ... Up 80->80/tcp
При първоначалното стартиране на chitanka_app
контейнера, ще бъде изтеглена актуалната версия на базата от данни на Моята Библиотека
Съдържанието (архива) на Моята Библиотека може да бъде обновен като стартирате cron скрипта за периодично обновяване:
# docker-compose exec --user www-data app bash
www-data@277af26280d7:~/html$ cd /var/www/chitanka/
www-data@277af26280d7:~/chitanka$ ./bin/update
21:47:43: Update started on 2022-06-10.
21:47:43: Pause for 30 seconds.
21:48:13: Executing source update...
21:48:15: Executing content update...
21:48:28: Executing database update...
21:48:28: Done.
db
контейнерът използва стандартен MariaDB 10.5 docker image - текущата версия на MariaDB в Debian GNU/Linux bullseye
. Настройте MYSQL_
параметрите или използвайте тези по подразбиране.
db:
image: mariadb:10.5
restart: always
command: --collation-server=utf8mb4_unicode_ci --character-set-server=utf8mb4 --skip-character-set-client-handshake
volumes:
- db:/var/lib/mysql
app
контейнерът съдържа изходния код на Моята Библиотека. Скриптовете за генерирането му можете да намерите в текущото хранилище.
app:
image: basekat/chitanka
restart: always
volumes:
- config:/var/www/chitanka/app/config
- app:/var/www/chitanka
- ./content:/var/www/chitanka/web/content
Следните volumes са дефинирани:
config:/var/www/chitanka/app/config
- Различни конфигурационни файловapp:/var/www/chitanka
- Изходен код./content:/var/www/chitanka/web/content
- Съдържанието на Моята библиотека.
Важно е да укажете пътя до content директорията, която ще съдържа архива (~20GB) с всички книги, корици и т.н. Уверете се, че имате около 20ГБ свободно място. Също така, трябва да я създадете предварително и да се уверите, че потребител с UID/GUID 33/33 (www-data) има права за писане в нея. В противен случай, Docker ще създаде volume и ще го монтира като потребител root контейнера. Това ще предоврати www-data да синхрониза съдържанието на тази директория.
web
контейнерът използва стандартен Docker nginx image.
web:
image: nginx
restart: always
environment:
- VIRTUAL_HOST=chitanka.local
extra_hosts:
- "chitanka.local:127.0.0.1"
ports:
- 80:80
depends_on:
- app
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./nginx_chitanka_conf.template:/etc/nginx/templates/default.conf.template
volumes_from:
- app
VIRTUAL_HOST
- В случай, че имате свой домейн, можете да го конфигурирате в този параметър. Също така го променете в секцията extra_hosts на всички услуги.
Ако искате уеб сървъра да слуша на друг порт (например 8080), можете да го смените в секцията ports
:
ports:
- 8080:80
Тъй като стандартният nginx image
пуска nginx
процеса с UID/GID nginx:nginx(101:101) (вместо www-data:www-data 33:33) се налага монтирането на nginx.conf
:
- ./nginx.conf:/etc/nginx/nginx.conf
и промяна на следния параметър:
user www-data;
nginx_chitanka_conf.template
е шаблон, който бива използван за динамично генериране на конфигурацията за виртуалния хост. Използван е ngix.conf от Автоматичния инсталатор
- ./nginx_chitanka_conf.template:/etc/nginx/templates/default.conf.template
cron
контейнерът се използва за автоматичното обновяване на съдържанието.
- TZ=Europe/Sofia
- часова зона
- CHITANKA_CRON=57 01 * * *
- часът в cron формат, в който да се извърши обновяването (в случая 01:57)
За да извършите обновяване на версията на всички docker image-и:
docker-compose down
docker-compose pull
docker-compose up -d
Ако искате да започнете наново и да изтриете всички volume (без content), можете да използвате следната команда:
docker-compose down -v
Ако искате да генерирате собствен image за app
контейнера:
cd chitanka
docker build -t chitanka-local
Променете в docker-compose.yml, заменете:
image: basekat/chitanka
с това:
image: chitanka-local
Ако искате да докладвате проблем или имате идея - Issues