[Практика проекта Docker] Использование Docker для развертывания облегченной системы ведения заметок Xnote
[Практика проекта Docker] Использование Docker для развертывания облегченной системы ведения заметок Xnote

1. Знакомство с Xnote

1.1 Знакомство с Xnote

  • Введение в Xnote

xnote — это легкая система ведения заметок для частных лиц. Она предоставляет множество функций управления данными и призвана освободить людей от информационной перегрузки.

1.2 Возможности Xnote

  • Он обладает богатыми возможностями управления данными и поддерживает несколько форматов заметок и функции управления файлами.
  • По умолчанию он предоставляет некоторые часто используемые инструменты, а также предоставляет возможности расширения. Пользователи могут писать различные плагины для удовлетворения своих собственных потребностей.
  • Кроссплатформенность, поддержка трех основных платформ: Windows, Mac и Linux. Его можно развернуть в облачных сервисах или запустить локально.
  • 100% бесплатный контроль данных, может работать в различных средах баз данных.
  • Поддерживает небольшую многопользовательскую работу, будьте осторожны при использовании ее в бизнес-сценариях для нескольких пользователей.

1.3 Сценарии использования Xnote

  • Управление личными заметками: xnote может помочь людям быстро записывать и систематизировать различные типы заметок, включая текст, изображения, ссылки и т. д. Пользователи могут создавать разные блокноты в соответствии со своими потребностями, организовывать связанные заметки вместе и детально управлять ими с помощью тегов, категорий и т. д.
  • Управление проектами: xnote предоставляет задачи и функции тегов, которые можно использовать для управления индивидуальными или небольшими командными проектами. Пользователи могут создавать задачи, добавлять к задачам подзадачи, устанавливать сроки и приоритеты, а также помечать задачи для облегчения быстрой фильтрации и поиска.
  • Управление знаниями: xnote поддерживает редактирование расширенного текста, и пользователи могут гибко создавать и редактировать свою собственную базу знаний. Вы можете систематизировать учебные заметки, техническую документацию, веб-ссылки и т. д. в xnote, чтобы облегчить свой собственный просмотр и обзор.
  • Управление временем: xnote предоставляет функцию напоминаний. Пользователи могут устанавливать время напоминаний, чтобы не пропустить важные дела. В то же время пользователи также могут синхронизировать задачи со своим календарем, чтобы более эффективно организовывать и управлять временем.
  • Совместная работа в команде: xnote поддерживает совместную работу нескольких человек. Члены команды могут обмениваться блокнотами и задачами, чтобы облегчить общение и сотрудничество между членами команды. Более того, xnote также предоставляет функции комментариев и обратной связи, позволяя членам команды своевременно общаться и обсуждать.

2. Знакомство с местной средой

2.1 Планирование местной окружающей среды

Эта практика представляет собой личную тестовую среду, а версия операционной системы — centos7.6.

hostname

IP-адрес

Версия операционной системы

Докер-версия

dokcer

192.168.3.166

centos 7.6

2 20.10.17

2.2 Введение в эту практику

1. Среда развертывания для этой практики — это персональная тестовая среда, будьте осторожны в производственной среде; 2. Используйте облегченную систему заметок Xnote от Docker.

3. Проверка местной окружающей среды

3.1 Проверка статуса службы Docker

Проверьте, нормально ли работает служба Docker, и убедитесь, что Docker работает нормально.

Язык кода:bash
копировать
[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-21 18:42:13 CST; 3min 53s ago
     Docs: https://docs.docker.com
 Main PID: 43305 (dockerd)
    Tasks: 82
   Memory: 103.6M
   CGroup: /system.slice/docker.service

3.2 Проверьте версию Docker

Проверьте версию Докера

Язык кода:bash
копировать
[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

3.3 Проверьте версию Docker Compose

Проверьте версию Docker Compose, чтобы убедиться, что она 2.0 или выше.

Язык кода:bash
копировать
[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

4. Загрузите изображение Xnote.

Извлеките изображение Xnote из облачного хранилища изображений Huawei.

Язык кода:bash
копировать
[root@jeven xnote]# docker pull swr.cn-north-4.myhuaweicloud.com/jeven/xnote
Using default tag: latest
latest: Pulling from jeven/xnote
Digest: sha256:10a511df294788bcb8fa9f2c98bdd3a66b48ef65222347d55c1af030e131dbdf
Status: Image is up to date for swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest
swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest

5. Развертывание приложения Xnote

5.1 Создайте каталог развертывания

Создать каталог развертывания

Язык кода:bash
копировать
mkdir -p /data/xnote/data && cd /data/xnote

авторизация каталога

Язык кода:bash
копировать
 chmod -R 777 /data/xnote/

5.2 Отредактируйте файл boot.properties.

Отредактируйте файл boot.properties.,Основные измененияdb_driver = sqliteчасть,Определить тип базы данных,Здесь используется база данных sqlite.

Язык кода:bash
копировать
vim boot.properties
Язык кода:bash
копировать
# Это конфигурация системы по умолчанию, не редактируйте ее.
# В элементах конфигурации для разделения модулей и слов используется знак подчеркивания (_). Не используйте (.), за исключением последнего (.type).
# Примечание о числах
# Перенос kb/mb/gb/tb/pb равен 1024, Перенос к/м 1000
# Например: 1kb = 1024, 1k = 1000

# Корневой каталог хранилища данных
data = ./data

# Номер порта HTTP-сервиса
port = 1234

# Корневой каталог сервера, по умолчанию пуст (корневой путь)
server_home = 

# Минимальное количество потоков
min_threads = 15
min_threads.type = int

# Включить ли режим отладки
debug = false
debug.type = bool

# Следует ли автоматически открывать браузер после запуска (возможность запуска на рабочем столе)
open_browser = false
open_browser.type = bool

# Воспроизводить ли голосовые подсказки после запуска
ringtone = false
ringtone.type = bool

# Нужно ли принудительно перенаправлять на https
force_https = false
force_https.type = bool

# Нужно ли быстро перезагружать (используется в режиме разработки)
fast_reload = false
fast_reload.type = bool

# TODO Порог памяти для перезапуска -1 означает отсутствие перезапуска
reload_mem_threshold = -1
reload_mem_threshold.type = int

# Переключение задач по расписанию
cron_enabled = true
cron_enabled.type = bool

# Включить ли WEBDAV
webdav = false
webdav.type = bool

# Управление базой данных {leveldb, leveldbpy, sqlite, mysql}
db_driver = sqlite
# Драйвер кэша {memory, db, redis}
db_driver_cache = memory

# Включить ли резервное копирование базы данных
db_backup = true
db_backup.type = bool

# Включить ли журнал отладки базы данных
db_log_debug = false
db_log_debug.type = bool

# Срок действия резервной копии базы данных (дни)
db_backup_expire_days = 5
db_backup_expire_days.type = int

# Включить ли отладку базы данных
db_debug = false
db_debug.type = bool

# Анализ производительности table_proxy (временно)
db_profile_table_proxy = false
db_profile_table_proxy.type = bool

# Максимальная длина системного журнала
db_sys_log_max_size = 10000
db_sys_log_max_size.type = int

# конфигурация кэша leveldb
block_cache_size = 16777216 # 16M
block_cache_size.type = int

# Конфигурация буфера записи Leveldb (размер MemTable)
write_buffer_size = 4194304 # 4M
write_buffer_size.type = int

# Максимальное количество файлов, открываемых leveldb
max_open_files = 1000
max_open_files.type = int

# конфигурация lmdb
lmdb_map_size = 1GB
lmdb_map_size.type = int

# Конфигурация синхронизации «главный-подчиненный»
# leader: главный узел
# follower: подчиненный узел
node_role = leader
# Идентификатор узла
node_id = my_node_id
# Создавать ли индекс синхронизации файлов
build_fs_sync_index = false
build_fs_sync_index.type = bool

# Включить ли binlog
binlog = false
binlog.type = bool

# максимальное значение бинлога
binlog_max_size = 1M
binlog_max_size.type = int

# Синхронизировать ли файлы
sync_files_from_leader = false
sync_files_from_leader.type = bool
# Синхронизировать ли базу данных
sync_db_from_leader = false
sync_db_from_leader.type = bool
# Синхронизированное время опроса
sync_interval_seconds = 3
sync_interval_seconds.type = int

# Конфигурация ноутбука, максимальная глубина ноутбука
max_book_depth = 2
max_book_depth.type = int

# Режим журнала SQLite по умолчанию установлен на DELETE. Изменение его на WAL может улучшить производительность параллелизма, но совместимость относительно плохая.
sqlite_journal_mode = DELETE

# Конфигурация mysql (пока не стабильна, находится в стадии тестирования)
mysql_database = xnote
mysql_host = 
mysql_user = 
mysql_password =
mysql_cloud_type = 
mysql_pool_size = 10
mysql_pool_size.type = int
mysql_port = 3306
mysql_port.type = int


# Конфигурация разрешений
auth_max_session_size = 20  # Максимальное количество сеансов на пользователя
auth_max_session_size.type = int


# Конфигурация пользовательского интерфейса
ui_show_footer = true
ui_show_footer.type = bool

5.3 Редактирование файла docker-compose.yml

Отредактируйте файл docker-compose.yml.

Язык кода:yaml
копировать
version: "3"
services:
 server:
     image: swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest   
     container_name: xnote
     volumes:
       - /data/xnote/data:/xnote/data
       - /data/xnote/boot.properties:/config/boot/boot.sae.properties
     ports:
       - 5238:1234

5.3 Создание контейнера Xnote

  • Создайте контейнер Xnote, используя файл docker-compose.yaml.
Язык кода:bash
копировать
[root@jeven xnote]# docker compose up -d
[+] Running 2/2
 ⠿ Network xnote_default  Created                                                                                                               0.1s
 ⠿ Container xnote        Started                                                                                                               1.7s

5.4 Проверка статуса контейнера Xnote

Проверьте состояние контейнера Xnote, чтобы убедиться, что контейнер Xnote запускается нормально.

Язык кода:bash
копировать
[root@jeven xnote]# docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
xnote               "python sentinel.py …"   server              running             0.0.0.0:5238->1234/tcp, :::5238->1234/tcp

5.5 Проверка журналов контейнера Xnote

Проверьте журнал работы контейнера Xnote, чтобы убедиться, что служба Xnote работает нормально.

Язык кода:bash
копировать
docker compose logs

6. Посетите домашнюю страницу Xnote.

6.1. Вход на начальную страницу Xnote.

Адрес доступа: http://192.168.3.166:5238, замените IP-адрес на IP-адрес вашего собственного сервера и войдите на начальную страницу Xnote. Если к нему нет доступа, проверьте, настроен ли брандмауэр сервера, разрешен ли порт группы безопасности облачного сервера и т. д.

6.2 Войдите в Xnote

Пароль учетной записи по умолчанию — admin/123456 и введите домашнюю страницу Xnote.

6.3 Создание нового тега заметки

Домашняя страница — Управление блокнотами — Создайте новый блокнот и введите имя блокнота.

6.4 Редактирование содержимого заметки

Нажмите «Создать заметку» и отредактируйте заголовок заметки.

Отредактируйте содержимое заметки и сохраните ее.

Посмотреть эффект заметки

7. Резюме

Xnote — это легкая система ведения заметок, которую можно быстро развернуть с помощью Docker. У него простая и эффективная страница, подходящая для начинающих. По моему первоначальному опыту я обнаружил, что страница Xnote работает плавно, без задержек и очень высокая скорость отклика. Он также предоставляет хорошую функцию классификации заметок, которая облегчает нам организацию и поиск заметок. Кроме того, Xnote также поддерживает заметки с уценкой, что очень полезно для записи технического контента. Если вам нужна простая и практичная система ведения заметок, вы можете попробовать Xnote.

Я участвую в последнем конкурсе эссе для специального учебного лагеря Tencent Technology Creation 2024. Приходите и разделите со мной приз!

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.