feat: ✨ added docker support
This commit is contained in:
parent
821028ed7d
commit
b1cebba225
10 changed files with 166 additions and 0 deletions
30
Dockerfile
Normal file
30
Dockerfile
Normal file
|
@ -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
docker-compose.yml
Normal file
33
docker-compose.yml
Normal file
|
@ -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:
|
|
@ -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",
|
||||
|
|
7
src/config_docker/database.ts
Normal file
7
src/config_docker/database.ts
Normal file
|
@ -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
src/config_docker/discord.ts
Normal file
14
src/config_docker/discord.ts
Normal file
|
@ -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
src/config_docker/embed.ts
Normal file
19
src/config_docker/embed.ts
Normal file
|
@ -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
src/config_docker/encryption.ts
Normal file
6
src/config_docker/encryption.ts
Normal file
|
@ -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
src/config_docker/other.ts
Normal file
25
src/config_docker/other.ts
Normal file
|
@ -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
src/config_docker/reputation.ts
Normal file
2
src/config_docker/reputation.ts
Normal file
|
@ -0,0 +1,2 @@
|
|||
// Timeout between repute someone (seconds)
|
||||
export const timeout = 86400; // One day
|
27
src/types/enviroment.d.ts
vendored
Normal file
27
src/types/enviroment.d.ts
vendored
Normal file
|
@ -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 {};
|
Loading…
Add table
Reference in a new issue