ZincSearch использует Go (для сервера) и VueJS (для веб-интерфейса).
Необходимо установить следующее:
git clone https://github.com/zincsearch/zincsearch
cd zincsearch
cd web
npm install
npm run build
cd ..
Вывод будет сохранён в папке web/dist. Папка web/dist будет встроена в двоичный файл ZincSearch при сборке приложения ZincSearch на Go.
Важно собирать приложение каждый раз, когда вы вносите изменения в код JavaScript, так как встроенный код затем встраивается в приложение Go.
Скачайте зависимости:
go mod tidy # это загрузит библиотеки Go, используемые zincsearch
Просто:
go build -o zincsearch cmd/zincsearch/main.go # создаст двоичный файл ZincSearch
Продвинутый:
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X github.com/zincsearch/zincsearch/pkg/meta.Version=${VERSION} -X github.com/zincsearch/zincsearch/pkg/meta.CommitHash=${COMMIT_HASH} -X github.com/zincsearch/zincsearch/pkg/meta.BuildDate=${BUILD_DATE}" -o zincsearch cmd/zincsearch/main.go
Настройка GOOS и GOARCH позволяет выполнять кроссплатформенную компиляцию. Проверьте официальные документы для всех возможных значений и комбинаций. Эта гист также полезна.
Установка CGO_ENABLED = 0 позволяет выполнить статическое связывание, что приводит к созданию одного двоичного файла без зависимостей.
Настройка ldflags позволяет передавать значения, такие как номер версии, в двоичный файл во время сборки вместо жёсткого кодирования значения в исходном коде. Обычно номер версии устанавливается конвейером CI во время сборки с использованием тега git.
После того как исходный код был клонирован, можно начать разработку.
Есть две области разработки:
go mod tidy
ZINC_FIRST_ADMIN_USER=admin ZINC_FIRST_ADMIN_PASSWORD=Complexpass#123 go run cmd/zincsearch/main.go
Это запустит сервер API ZincSearch на порту 4080.
Переменные среды ZINC_FIRST_ADMIN_USER и ZINC_FIRST_ADMIN_PASSWORD требуются только при первом запуске ZincSearch.
cd web
npm install
npm run dev
Это запустит UI-сервер на порту 8080.
Чтобы эффективно использовать пользовательский интерфейс, вам потребуется запустить сервер ZincSearch API в отдельном окне, которое будет принимать запросы от пользовательского интерфейса.
Сервер также предоставляет конечную точку API Swagger, которую вы можете увидеть, посетив путь /swagger/index.html. Он использует gin-swagger, чтобы пометить конечные точки API аннотациями комментариев, и swag, чтобы сгенерировать спецификацию API из аннотаций в документацию Swagger 2.0.
Если вы обновляете аннотации, вам также необходимо повторно создать документацию Swagger, выполнив скрипт swagger.sh
, расположенный в базовой папке проекта:
./swagger.sh
2022/05/31 10:18:13 Generate swagger docs....
2022/05/31 10:18:13 Generate general API Info, search dir:./
2022/05/31 10:18:13 Generating auth.LoginRequest
2022/05/31 10:18:13 Generating auth.LoginSuccess
2022/05/31 10:18:13 Generating auth.SimpleUser
2022/05/31 10:18:13 Generating auth.LoginError
2022/05/31 10:18:13 create docs.go at docs/docs.go
2022/05/31 10:18:13 create swagger.json at docs/swagger.json
2022/05/31 10:18:13 create swagger.yaml at docs/swagger.yaml
```
## Создание образа Docker
Убедитесь, что у вас установлен [Docker](https://docs.docker.com/get-docker/).
Простая сборка:
```shell
docker build --tag zincsearch:latest . -f Dockerfile
```
Сборка для нескольких архитектур.
Для создания сборок для нескольких архитектур вам понадобится [buildx](https://docs.docker.com/buildx/working-with-buildx/), установленный. Вам нужно будет передать флаг платформы для платформы, которую вы хотите использовать.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )