Skip to content

basekat/chitanka-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Какво е Chitanka Docker?

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

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 контейнерът съдържа изходния код на Моята Библиотека. Скриптовете за генерирането му можете да намерите в текущото хранилище.

  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

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

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

Създаване на собствен chitanka image

Ако искате да генерирате собствен image за app контейнера:

cd chitanka
docker build -t chitanka-local

Променете в docker-compose.yml, заменете: image: basekat/chitanka

с това: image: chitanka-local

Докладване на проблеми

Ако искате да докладвате проблем или имате идея - Issues

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published