Skip to content

Commit

Permalink
feat: ✨ added docker support
Browse files Browse the repository at this point in the history
  • Loading branch information
jqshuv committed Jul 4, 2022
1 parent 821028e commit b1cebba
Show file tree
Hide file tree
Showing 10 changed files with 166 additions and 0 deletions.
30 changes: 30 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM node:16

LABEL maintainer="me@jqshuv.xyz"
LABEL org.opencontainers.image.source https://github.com/ZynerOrg/xyter
LABEL org.opencontainers.image.description "An multi-purpose discord.js bot."
LABEL org.opencontainers.image.licenses=GPL-3.0-only


WORKDIR /app

LABEL maintainer="me@jqshuv.xyz"
LABEL org.opencontainers.image.source https://github.com/ZynerOrg/xyter
LABEL org.opencontainers.image.description "An multi-purpose discord.js bot."
LABEL org.opencontainers.image.licenses=GPL-3.0-only

COPY package* .
RUN npm install

COPY . .
RUN mv src/config_docker src/config

RUN npx tsc

RUN npx tsc -v > /app/tsc.log
RUN npm -v > /app/npm.log
RUN node -v > /app/node.log

WORKDIR /app/build

CMD [ "npx", "nodemon" ]
33 changes: 33 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
services:
app:
depends_on:
- mongodb
build: .
restart: unless-stopped
environment:
# You can leave this as-is.
- DB_HOST=mongodb
- DB_USER=mongouser
- DB_PASSWORD=mongopasword
- DB_NAME=xyter
- DB_PORT=27017
# You have to set these values!
- DISCORD_TOKEN=YOUR_DISCORD_TOKEN
- DISCORD_CLIENT_ID=YOUR_CLIENT_ID
- DISCORD_DEV_GUILD_ID=YOUR_DEV_GUILD_ID
- HOSTER_NAME=YOUR_HOSTER_NAME
- NODE_ENV=development
stdin_open: true
tty: true
mongodb:
image: mongo:latest
restart: unless-stopped
environment:
- MONGO_INITDB_ROOT_USERNAME=mongouser
- MONGO_INITDB_ROOT_PASSWORD=mongopasword
ports:
- $MONGODB_LOCAL_PORT:27017
volumes:
- db:/data/db
volumes:
db:
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
"url": "https://github.com/ZynerOrg/xyter.git"
},
"author": "Vermium Sifell <vermium@zyner.org> (https://zyner.org)",
"contributors": [
"Joshua Schmitt <me@jqshuv.xyz> (https://jqshuv.xyz)"
],
"license": "GPL-3.0-only",
"bugs": {
"url": "https://github.com/ZynerOrg/xyter/issues",
Expand Down
7 changes: 7 additions & 0 deletions src/config_docker/database.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// MongoDB connection string

const { DB_USER, DB_PASSWORD, DB_HOST, DB_PORT, DB_NAME } = process.env;

const mongoUrl = `mongodb://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}?authSource=admin`;

export const url = mongoUrl;
14 changes: 14 additions & 0 deletions src/config_docker/discord.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { Intents } from "discord.js"; // discord.js

// Discord API token
export const token = process.env["DISCORD_TOKEN"];

// Discord API id
export const clientId = process.env["DISCORD_CLIENT_ID"];

// Discord API intents
export const intents = [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MESSAGES,
Intents.FLAGS.GUILD_MEMBERS,
];
19 changes: 19 additions & 0 deletions src/config_docker/embed.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Dependencies
import { ColorResolvable } from "discord.js";

// Color for successfully actions
export const successColor: ColorResolvable = "#22bb33";

// Color for waiting actions
export const waitColor: ColorResolvable = "#f0ad4e";

// Color for error actions
export const errorColor: ColorResolvable = "#bb2124";

// Footer text
export const footerText =
process.env["EMBED_FOOTER_TEXT"] || "https://github.com/ZynerOrg/xyter";

// Footer icon
export const footerIcon =
process.env["EMBED_FOOTER_ICON"] || "https://github.com/ZynerOrg.png";
6 changes: 6 additions & 0 deletions src/config_docker/encryption.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Encryption algorithm
export const algorithm = "aes-256-ctr";

// Encryption secret (strictly 32 length)
export const secretKey =
process.env["SECRET_KEY"] || "h/f#Ts8w5sch5L:J*_gPW)]$'!4K.K.-";
25 changes: 25 additions & 0 deletions src/config_docker/other.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Development features

let isDevMode: boolean;

if (process.env["NODE_ENV"] == "production") {
isDevMode = false;
} else {
isDevMode = true;
}

export const devMode = isDevMode;

// Development guild
export const guildId = process.env["DISCORD_DEV_GUILD_ID"];

// Hoster name
export const hosterName = process.env["HOSTER_NAME"];

// Hoster Url
export const hosterUrl =
process.env["HOSTER_URL"] ||
"https://xyter.zyner.org/customization/change-hoster";

// Winston log level
export const logLevel = "info";
2 changes: 2 additions & 0 deletions src/config_docker/reputation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Timeout between repute someone (seconds)
export const timeout = 86400; // One day
27 changes: 27 additions & 0 deletions src/types/enviroment.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright (c) 2022 Joshua Schmitt
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT

declare global {
namespace NodeJS {
interface ProcessEnv {
DB_HOST: string;
DB_PORT: string;
DB_USER: string;
DB_PASSWORD: string;
DISCORD_TOKEN: string;
DISCORD_CLIENT_ID: string;
DISCORD_DEV_GUILD_ID: string;
EMBED_FOOTER_TEXT: string;
EMBED_FOOTER_ICON: string;
SECRET_KEY: string;
DISCORD_DEV_GUILD_ID: string;
HOSTER_NAME: string;
HOSTER_URL: string;
NODE_ENV: string;
}
}
}

export {};

0 comments on commit b1cebba

Please sign in to comment.