Skip to content

Commit

Permalink
Merge pull request #45 from PretendoNetwork/dev
Browse files Browse the repository at this point in the history
  • Loading branch information
jonbarrow authored Oct 18, 2024
2 parents d872411 + eced0be commit 883c4f8
Show file tree
Hide file tree
Showing 69 changed files with 5,608 additions and 1,875 deletions.
3 changes: 2 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.git
node_modules
config.json
database
node_modules
db.json
dist/
2 changes: 1 addition & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
],
"rules": {
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }],
"@typescript-eslint/no-extra-semi": "error",
"@typescript-eslint/keyword-spacing": "error",
"require-atomic-updates": "warn",
Expand Down
56 changes: 56 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Build and Publish Docker Image

on:
push:
pull_request:
workflow_dispatch:

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-publish:
env:
SHOULD_PUSH_IMAGE: ${{ (github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev')) || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest

permissions:
contents: read
packages: write

steps:
- name: Set up QEMU for Docker
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log into the container registry
if: ${{ env.SHOULD_PUSH_IMAGE == 'true' }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }}
type=raw,value=edge,enable=${{ github.ref == 'refs/heads/dev' }}
type=sha
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
push: ${{ env.SHOULD_PUSH_IMAGE }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
66 changes: 45 additions & 21 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,25 +1,49 @@
FROM node:18-buster

RUN apt-get update && apt-get install -y --fix-missing --no-install-recommends \
build-essential \
curl \
git-core \
iputils-ping \
pkg-config \
rsync \
software-properties-common \
unzip \
wget
WORKDIR /app

COPY "docker/entrypoint.sh" ./

COPY package*.json ./
RUN npm install
# syntax=docker/dockerfile:1

ARG app_dir="/home/node/app"

# * Base Node.js image
FROM node:20-slim AS base
ARG app_dir
WORKDIR ${app_dir}
RUN apt-get update && apt-get install -y python3 python3-pip make gcc g++

# * Installing production dependencies
FROM base AS dependencies

RUN --mount=type=bind,source=package.json,target=package.json \
--mount=type=bind,source=package-lock.json,target=package-lock.json \
--mount=type=cache,target=/root/.npm \
npm ci --omit=dev


# * Installing development dependencies and building the application
FROM base AS build

RUN --mount=type=bind,source=package.json,target=package.json \
--mount=type=bind,source=package-lock.json,target=package-lock.json \
--mount=type=cache,target=/root/.npm \
npm ci

COPY . .
RUN npm run build

COPY . ./
# * Running the final application
FROM base AS final
ARG app_dir

RUN mkdir database && chown node:node database

ENV NODE_ENV=production
USER node


COPY package.json .

COPY --from=dependencies ${app_dir}/node_modules ${app_dir}/node_modules
COPY --from=build ${app_dir}/dist ${app_dir}/dist
COPY lib lib

VOLUME [ "/app/config.json", "/app/database", "/app/db.json" ]
VOLUME ["./config.json", "./database"]

CMD ["sh", "entrypoint.sh"]
CMD ["node", "--max-old-space-size=4096", "."]
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,10 @@ Features:
- `/kick` command for kicking users. Supports multiple users per kick. 3 kicks results in a ban
- `/ban` command for banning users. Supports multiple users per warning
- NSFW content detection

Requirements:

- Linux OS
- At least 4096mb available memory

As we rely on the `phhammdist` extension for Sqlite3 (which is included in `lib/phhammdist`) currently this only supports Linux
2 changes: 0 additions & 2 deletions example.config.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
{
"bot_token": "TOKEN",
"nsfw_model_path": "./nsfw_model",
"quantized_nsfw_model": false,
"json_db_path": "./db.json",
"sequelize": {
"force": false,
Expand Down
3 changes: 3 additions & 0 deletions lib/phhammdist/CHANGES
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
The source of https://github.com/greycubesgav/sqlite-phhammdist/tree/master was modified to allow base 2 strings

updated source available at https://github.com/PretendoNetwork/sqlite-phhammdist
Loading

0 comments on commit 883c4f8

Please sign in to comment.