fix: 🚀 fix and rewrote docker stuff

I reworked the docker files and added docker support for the new config system.

The old config system is no longer working
This commit is contained in:
Joshua Schmitt 2022-07-05 16:07:02 +00:00 committed by GitHub
parent 8a10730dd4
commit fbcbf8545b
12 changed files with 69 additions and 139 deletions

6
.dockerignore Normal file
View file

@ -0,0 +1,6 @@
.vscode
.husky
.github
.cspell
.env
node_modules

5
.gitignore vendored
View file

@ -140,3 +140,8 @@ dist
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Docker
database
docker-compose.local.yml

View file

@ -1,30 +1,16 @@
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
LABEL maintainer="xyter@zyner.org"
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
RUN npx -y tsc
WORKDIR /app/build
CMD [ "npx", "nodemon" ]
CMD [ "node", "." ]

33
docker-compose.dev.yml Normal file
View file

@ -0,0 +1,33 @@
services:
app:
depends_on:
- mongodb
build: .
restart: unless-stopped
environment:
- DISCORD_TOKEN=YOUR TOKEN
- DISCORD_CLIENT_ID=YOUR CLIENT ID
- DISCORD_GUILD_ID=YOUR GUILD ID
### LEAVE THIS AS IT IS! ###
- MONGO_URL=mongodb://mongodb:27017/xyter?retryWrites=true&w=majority
############################
- ENCRYPTION_ALGORITHM=aes-256-ctr
- ENCRYPTION_SECRET=A RANDOM STRING WITH LENGTH OF 32
- EMEBD_COLOR_SUCCESS=#22bb33
- EMBED_COLOR_WAIT=#f0ad4e
- EMBED_COLOR_ERROR=#bb2124
- EMBED_FOOTER_TEXT=https://github.com/ZynerOrg/xyter
- EMBED_FOOTER_ICON=https://github.com/ZynerOrg.png
- LOG_LEVEL=silly
- REPUTATION_TIMEOUT=86400
- BOT_HOSTER_NAME=Zyner
- BOT_HOSTER_URL=https://xyter.zyner.org/customization/change-hoster
- NODE_ENV=production
stdin_open: true
tty: true
mongodb:
image: mongo:4.2.21
restart: unless-stopped
volumes:
- ./logs:/app/build/logs
- ./database:/data/db

View file

@ -2,32 +2,32 @@ services:
app:
depends_on:
- mongodb
build: .
image: zyner/xyter:2022.07.0
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
- DISCORD_TOKEN=YOUR TOKEN
- DISCORD_CLIENT_ID=YOUR CLIENT ID
- DISCORD_GUILD_ID=YOUR GUILD ID
### LEAVE THIS AS IT IS! ###
- MONGO_URL=mongodb://mongodb:27017/xyter?retryWrites=true&w=majority
############################
- ENCRYPTION_ALGORITHM=aes-256-ctr
- ENCRYPTION_SECRET=A RANDOM STRING WITH LENGTH OF 32
- EMEBD_COLOR_SUCCESS=#22bb33
- EMBED_COLOR_WAIT=#f0ad4e
- EMBED_COLOR_ERROR=#bb2124
- EMBED_FOOTER_TEXT=https://github.com/ZynerOrg/xyter
- EMBED_FOOTER_ICON=https://github.com/ZynerOrg.png
- LOG_LEVEL=silly
- REPUTATION_TIMEOUT=86400
- BOT_HOSTER_NAME=Zyner
- BOT_HOSTER_URL=https://xyter.zyner.org/customization/change-hoster
- NODE_ENV=production
stdin_open: true
tty: true
mongodb:
image: mongo:latest
image: mongo:4.2.21
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:
- ./logs:/app/build/logs
- ./database:/data/db

View file

@ -1,7 +0,0 @@
// 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;

View file

@ -1,14 +0,0 @@
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,
];

View file

@ -1,19 +0,0 @@
// 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";

View file

@ -1,6 +0,0 @@
// 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.-";

View file

@ -1,25 +0,0 @@
// 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";

View file

@ -1,2 +0,0 @@
// Timeout between repute someone (seconds)
export const timeout = 86400; // One day

View file

@ -1,27 +0,0 @@
// 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 {};