diff --git a/.gitignore b/.gitignore index 14029bc..fbf964f 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ # Go workspace file go.work go.work.sum +.DS_Store # env file .env @@ -30,3 +31,4 @@ pocketbase/pb_data notes.txt cache docker-compose.yaml +pb_data diff --git a/README.md b/README.md index bad499c..e18e147 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,31 @@ отслеживания ошибок, которые сохраняются в базе данных с графическим интерфейсом. Задачи можно перезапускать, и они не сбрасываются при перезапуске бота. +# Запуск в контейнере +Скопируем код +```shell +git clone https://github.com/soaska/faceswaper.git +cd faceswaper +``` + +Заполним окружение +```shell +cp example.env .env +vim .env +``` + +Запустим pocketbase, удалим существующую коллекцию users, затем перейдем во вкладку +settings / import collections. Далее в меню load from json выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json) +`pocketbase/collections/PB Schema.json` +```shell +podman compose up pocketbase +``` + +Теперь можем запускать бота и воркер. +```shell +podman compose up -d --build +``` + # Запуск Запустим pocketbase по [этой](https://pocketbase.io/docs/) инструкции. Зайдем во вкладку settings / import collections. Далее в меню load from json выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json) @@ -49,6 +74,6 @@ go run . Бот отвечает на сообщения с помощью компонента *telegram-bot*, задачи выполняются *job-manager*. Компоненты связаны базой данных pocketbase, все операции выполняются через нее, ее наличие обязательно. Папки `telegram-bot/data` и `job-manager/cache` содержат только временные файлы и -могут быть удалены в период неактивности программы. +могут быть удалены в период неактивности программы. job-manager требует ffmpeg. По вопросам пишите в [issues](https://github.com/soaska/faceswaper/issues) или на почту soaska@cornspace.su. diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..441c8fc --- /dev/null +++ b/compose.yaml @@ -0,0 +1,34 @@ +services: + pocketbase: + build: + context: ./pocketbase + dockerfile: Dockerfile + restart: unless-stopped + ports: + - 8080:8080 + volumes: + - ./pb_data:/pb/pb_data + + telegram-bot: + build: + context: ./job-manager + dockerfile: Dockerfile + environment: + - DOCKER_BUILD=yas + env_file: + - .env + restart: unless-stopped + depends_on: + - pocketbase + + job-manager: + build: + context: ./telegram-bot + dockerfile: Dockerfile + environment: + - DOCKER_BUILD=yas + env_file: + - .env + restart: unless-stopped + depends_on: + - pocketbase diff --git a/example.env b/example.env new file mode 100644 index 0000000..257f0bb --- /dev/null +++ b/example.env @@ -0,0 +1,9 @@ +# telegram +TELEGRAM_API = https://api.telegram.org +TELEGRAM_APITOKEN = 1294890:asdasfdewioru3o2ier +BOT_DEBUG = false + +# pocketbase +POCKETBASE_URL = http://0.0.0.0:8080 +POCKETBASE_LOGIN = admin@supermario.carts +POCKETBASE_PASSWORD = MAShsRoOm diff --git a/job-manager/Dockerfile b/job-manager/Dockerfile new file mode 100644 index 0000000..1ea7d35 --- /dev/null +++ b/job-manager/Dockerfile @@ -0,0 +1,12 @@ +FROM golang:latest as builder +WORKDIR /build +COPY ./ ./ +RUN go mod download +RUN CGO_ENABLED=0 go build -o ./main + + +FROM alpine:latest +WORKDIR /app +COPY --from=builder /build/main ./main +RUN apk --no-cache add ca-certificates tzdata ffmpeg +ENTRYPOINT ["./main"] diff --git a/pocketbase/Dockerfile b/pocketbase/Dockerfile new file mode 100644 index 0000000..96ad8b8 --- /dev/null +++ b/pocketbase/Dockerfile @@ -0,0 +1,22 @@ +FROM alpine:latest + +ARG PB_VERSION=0.23.2 + +RUN apk add --no-cache \ + unzip \ + ca-certificates + +# download and unzip PocketBase +ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_amd64.zip /tmp/pb.zip +RUN unzip /tmp/pb.zip -d /pb/ + +# uncomment to copy the local pb_migrations dir into the image +COPY ./collections/* /pb/pb_migrations/ + +# uncomment to copy the local pb_hooks dir into the image +# COPY ./pb_hooks /pb/pb_hooks + +EXPOSE 8080 + +# start PocketBase +CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8080"] diff --git a/telegram-bot/Dockerfile b/telegram-bot/Dockerfile new file mode 100644 index 0000000..7bda35c --- /dev/null +++ b/telegram-bot/Dockerfile @@ -0,0 +1,12 @@ +FROM golang:latest as builder +WORKDIR /build +COPY ./ ./ +RUN go mod download +RUN CGO_ENABLED=0 go build -o ./main + + +FROM alpine:latest +WORKDIR /app +COPY --from=builder /build/main ./main +RUN apk --no-cache add ca-certificates tzdata +ENTRYPOINT ["./main"]