- В данном проекте также реализовано:
- Возможность определять порт, если есть переменная окружения TODO_PORT.
- Возможность определять путь к файлу базы данных, если есть переменная окружения TODO_DBFILE.
- Назначение задачи в указанные дни недели.
- Назначение задачи в указанные дни месяца, с возможностью указания конкретных месяцев.
- Реализован поиск1, независимо от регистра, по полям TITLE и COMMENT.
- Простейшая аутентификация, через переменную окружения TODO_PASSWORD.
- Реализован Dockerfile для создания образа.
Программа выполняет функции планировщика, который возвращает следующую дату выполнения задачи в зависимости от переданных параметров её повторения.
Инструкция по локальному запуску и информация по приложению.
Инструкция по созданию Docker образа и запуску контейнера.
Инструкция по запуску SQLite в терминале внутри запущенного контейнера.
Пароль по-умолчанию для планировщика назначен: qwerty
По-умолчанию приложение запускается: 0.0.0.0:7540
База создаётся c названием и путём: internal/storage_db/scheduler.db
Стандартные настройки для сервера лежат: internal/config/server_conf.go
Стандартные настройки для тестов лежат: internal/config/settings.go
Переменные окружения и их описание, хранятся в файле корня проекта: .env
Для генерации кода работы с базами данных, был использован: SQLC
2
- Программу можно запускать двумя способами через терминал.
- Обычные команды.
- Короткими командами из TaskFile.
Для изменения стандартных параметров, как и пароля, нужно изменить TODO_PORT
, TODO_DBFILE
или TODO_PASSWORD
в .env
файле корня проекта.
- Для запуска приложения в терминале.
go run ./...
илиtask run
- Для запуска тестов в терминале.
go test -v ./... -count=1
илиtask test
Путь для тестов, назначается в .env
отдельно от основного для программы, должен совпадать с основным, но иметь свой выход на расположение базы данных. При изменении TODO_DBFILE
необходимо также менять значения в TODO_DBFILE_TEST
.
!!! ЗАПУСК ТЕСТОВ УДАЛЯЕТ ВСЕ ДАННЫЕ ИЗ БАЗЫ ДАННЫХ !!!
- Первым шагом собрать образ.
- Для запуска сборки Docker.
docker build -t scheduler_app:v1 .
илиtask d_build
- Вторым шагом, запустить необходимым способом.
-
Обычный запуск с портом по-умолчанию, при изменении
7540
страница планировщика открываться не будет, сервер так и останется на7540
порте.
docker run --name="sched_app" -d -p 7540:7540 scheduler_app:v1
-
Для изменения стандартного порта необходимо передать
TODO_PORT
и указать его в-p
, тогда сервер будет доступен на переданном порте.
docker run --name="sched_app" -e "TODO_PORT=7544" -d -p 7544:7544 scheduler_app:v1
-
Запустит контейнер на порт указанный в Dockerfile
EXPOSE 7540
.
docker run --name="sched_app" -d -P scheduler_app:v1
-
Для изменения стандартного пароля необходимо передать
TODO_PASSWORD
, тогда стандартный пароль будет изменен и можно войти по своему.
docker run --name="sched_app" -e "TODO_PASSWORD=yourPass" -d -p 7540:7540 scheduler_app:v1
-
Для изменения стандартного пути необходимо передать
TODO_DBFILE
, тогда приложение создаст базу данных в соответствии с переданными, включая название базы.
docker run --name="sched_app" -e "TODO_DBFILE=internal/yourPath/yourName.db" -d -p 7540:7540 scheduler_app:v1
-
Если необходимо изменить все стандартные значения. При изменении порта, обязательно передавать такое же значение через
-p
.
docker run --name="sched_app" -e "TODO_DBFILE=internal/yourPath/yourName.db" -e "TODO_PASSWORD=yourPass" -e "TODO_PORT=7544" -d -p 7544:7544 scheduler_app:v1
-
Запуск в интерактивном режиме, только при запущенном контейнере.
docker exec -it sched_app /bin/bash
- Остановить контейнер после использования.
- Остановка контейнера.
docker stop sched_app
- Запускать уже собранный и остановленный контейнер по необходимости, чтобы получать сохраненные данные.
- Запуск уже собранного и остановленного контейнера.
docker start sched_app
Если имя таблицы и путь не изменялись, то запуск бинарника сразу откроет базу данных "scheduler.db". И можно работать с таблицей.
Для этого необходимо, при стандартных настройках:
- Запустить контейнер одним из обычных способов запуска Docker образа.
- При запущенном контейнере выполнить
docker exec -it sched_app /bin/bash
команду. - Должна открыться консоль
bash-5.1$
. - Выполнить команду
./run_sqlite.sh
и попадёте внутрь программы SQLite. - Для выхода написать
.exit
и сноваexit
.
Footnotes
-
Для поиска была сделана еще одна колонка в таблице, которая хранит данные из TITLE и REPEAT в нижнем регистре. ↩
-
После генерации нового кода SQLC необходимо заменить все типы значений
ID
int64
наstring
в файлеquery.sql.go
иmodels.go
. А также для методовCreateTask
иUpdateTask
, изменить поляarg.Search
наstrings.ToLower(arg.Title+" "+arg.Comment)
. ↩