Docker image fix #158
60
.Build/Docker/Configure.sh
Normal file
60
.Build/Docker/Configure.sh
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ex
|
||||
# Update Debian Repository
|
||||
apt update
|
||||
|
||||
# Install Necessary Packages
|
||||
apt install -y curl wget git zsh sudo unzip zip jq python python3 screen
|
||||
|
||||
# Install Build Dependencies
|
||||
apt install -y ca-certificates make build-essential
|
||||
|
||||
# Install Libs
|
||||
apt install -y procps lsb-release xdg-utils g++ libnss3 libatk-bridge2.0-0 gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxrandr2 libxrender1 libxss1 libxtst6 fonts-liberation libnss3 libgbm-dev
|
||||
|
||||
# Install Dependencies to diferent architectures
|
||||
if ! [ "$(uname -m)" == "x86_64" ];then
|
||||
mkdir -p /lib64
|
||||
apt install -y qemu-user-static
|
||||
wget -q "https://github.com/The-Bds-Maneger/external_files/raw/main/linux_libries.zip" -O /tmp/libries.zip
|
||||
unzip -o /tmp/libries.zip -d /
|
||||
rm -rfv /tmp/libries.zip
|
||||
fi
|
||||
|
||||
# Install openjdk
|
||||
case "$(uname -m)" in
|
||||
x86_64 | aarch64 ) apt install -y openjdk-17*;;
|
||||
* ) apt install -y openjdk-11*;;
|
||||
esac
|
||||
|
||||
# Install nodejs from github release
|
||||
get_current_node_version=$(curl -sL https://api.github.com/repos/nodejs/node/releases/latest | grep tag_name | cut -d '"' -f 4)
|
||||
case $(uname -m) in
|
||||
x86_64 ) wget -q https://nodejs.org/download/release/$get_current_node_version/node-$get_current_node_version-linux-x64.tar.xz -O /tmp/node.tar.xz;;
|
||||
aarch64 ) wget -q https://nodejs.org/download/release/$get_current_node_version/node-$get_current_node_version-linux-arm64.tar.xz -O /tmp/node.tar.xz;;
|
||||
armv7l ) wget -q https://nodejs.org/download/release/$get_current_node_version/node-$get_current_node_version-linux-armv7l.tar.xz -O /tmp/node.tar.xz;;
|
||||
ppc64el ) wget -q https://nodejs.org/download/release/$get_current_node_version/node-$get_current_node_version-linux-ppc64le.tar.xz -O /tmp/node.tar.xz;;
|
||||
s390x ) wget -q https://nodejs.org/download/release/$get_current_node_version/node-$get_current_node_version-linux-s390x.tar.xz -O /tmp/node.tar.xz;;
|
||||
*) echo "Unsupported architecture"; exit 1;;
|
||||
esac
|
||||
tar -xJf /tmp/node.tar.xz -C /usr
|
||||
rm -rf /tmp/node.tar.xz
|
||||
|
||||
# Setup non root user
|
||||
useradd -m -p "$(perl -e 'print crypt($ARGV[0], "password")' "LucaA1113ba21")" "thebds"
|
||||
addgroup thebds sudo
|
||||
addgroup thebds root
|
||||
usermod --shell /bin/bash thebds;
|
||||
echo "thebds ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||
|
||||
# Remove Unnecessary Packages
|
||||
apt autoremove -y
|
||||
|
||||
# Clean up apt cache
|
||||
apt clean -y
|
||||
|
||||
# Remove Unnecessary Files
|
||||
rm -rf /var/lib/apt/lists/* /root/.gnupg /tmp/*
|
||||
|
||||
# Sucessfully installed
|
||||
exit 0
|
||||
@@ -1,31 +1,8 @@
|
||||
const fetchSync = require("@the-bds-maneger/fetchsync")
|
||||
const { writeFileSync } = require("fs");
|
||||
const { exit } = require("process");
|
||||
const { resolve } = require("path");
|
||||
const { exec, execSync } = require("child_process");
|
||||
const JSon_release = fetchSync("https://api.github.com/repos/Sirherobrine23/MSQ-files/releases").json()
|
||||
|
||||
writeFileSync("./Docker.js", JSON.stringify(JSon_release, null, 4))
|
||||
const DockerLatestBin = [];
|
||||
for (let _Check of JSon_release){
|
||||
if (DockerLatestBin.length >= 1) break;
|
||||
for (let _file of _Check.assets) {
|
||||
if (`DockerRunBuild_${process.platform}_${process.arch}` === _file.name) {
|
||||
DockerLatestBin.push(_Check);
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!(DockerLatestBin.length >= 1)) exit(1);
|
||||
const bin = fetchSync(`https://github.com/Sirherobrine23/MSQ-files/releases/download/${DockerLatestBin[0].tag_name}/DockerRunBuild_${process.platform}_${process.arch}`, true);
|
||||
const binPath = resolve(__dirname, "../Docker.exe")
|
||||
bin.save(binPath)
|
||||
if (process.platform !== "win32") execSync(`chmod 777 "${binPath}"`)
|
||||
const exe = exec(binPath)
|
||||
function Log(data = ""){
|
||||
data = data.split("\r").join("\n").split("\n").filter(_D => {return (_D !== "")})
|
||||
for (let _log of data) console.log(_log);
|
||||
}
|
||||
exe.stdout.on("data", d => Log(d))
|
||||
exe.stderr.on("data", d => Log(d))
|
||||
exe.on("exit", c => exit(c))
|
||||
#!/usr/bin/env node
|
||||
const path = require("path");
|
||||
process.env.Docker_Root = path.resolve(__dirname, "../");
|
||||
(async () => {
|
||||
const Docker = require("docker-run_build");
|
||||
await Docker.Build();
|
||||
await Docker.Run();
|
||||
})();
|
||||
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -1 +1 @@
|
||||
*.sh text eol=lf
|
||||
*.sh text=lf eol=lf
|
||||
9
.vscode/launch.json
vendored
9
.vscode/launch.json
vendored
@@ -4,13 +4,8 @@
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "Build Dev Docker Image",
|
||||
"runtimeExecutable": "npm",
|
||||
"runtimeArgs": [
|
||||
"run",
|
||||
"Docker"
|
||||
],
|
||||
"port": 9229
|
||||
"name": "Docker Build and Run",
|
||||
"program": "${workspaceFolder}/.Build/DockerImage.js"
|
||||
},
|
||||
{
|
||||
"type": "node",
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
name: BdsCore
|
||||
file: Dockerfile
|
||||
tag: bdsmaneger/maneger:latestdebug
|
||||
tag: bdsmaneger/core:dev
|
||||
target: bdscore
|
||||
buildx: true
|
||||
buildx:
|
||||
enable: true
|
||||
platform: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64
|
||||
|
||||
# Docker Run envs
|
||||
env:
|
||||
|
||||
53
Dockerfile
53
Dockerfile
@@ -1,37 +1,38 @@
|
||||
# bdsmaneger/node_image
|
||||
# Base
|
||||
FROM debian:latest AS bdsbase
|
||||
# Setup Bds Manerger Project Docker Base
|
||||
FROM debian:testing AS bdsbase
|
||||
USER root
|
||||
ENV DEBIAN_FRONTEND=noninteractive DOCKER_IMAGE="true"
|
||||
RUN apt update && \
|
||||
apt -y install curl wget git zsh sudo unzip zip jq python python3 ca-certificates make build-essential screen procps lsb-release xdg-utils g++ openjdk-11-jdk openjdk-11-jre \
|
||||
libnss3 libatk-bridge2.0-0 gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 \
|
||||
libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \
|
||||
libxdamage1 libxext6 libxfixes3 libxrandr2 libxrender1 libxss1 libxtst6 fonts-liberation libappindicator1 libnss3 libgbm-dev && \
|
||||
apt autoremove -y && \
|
||||
apt clean -y && \
|
||||
rm -rf /var/lib/apt/lists/* /root/.gnupg /tmp/library-scripts /tmp/* && \
|
||||
case $(uname -m) in "x86_64") echo "Do not need dependency on the x86_64";; *) apt update; apt install -y qemu-user-static ;wget -q https://raw.githubusercontent.com/The-Bds-Maneger/external_files/main/linux_libries.zip -O /tmp/libries.zip ;unzip /tmp/libries.zip -d / ;rm -rfv /tmp/libries.zip ;mkdir -p /lib64 ;rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/* /tmp/* ;;esac && \
|
||||
wget -qO- https://raw.githubusercontent.com/Sirherobrine23/MSQ-files/main/DockerBuild/Build/bin/NodeInstall.sh | bash -; \
|
||||
export username="thebds" && export password="123aa3456s7" && \
|
||||
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password); useradd -m -p "$pass" "$username"; addgroup ${username} sudo; addgroup ${username} root; \
|
||||
usermod --shell /bin/bash --home /home/bds ${username}; echo "${username} ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||
ENV DEBIAN_FRONTEND="noninteractive" DOCKER_IMAGE="true"
|
||||
|
||||
# bdsmaneger/core
|
||||
# Bds Maneger Core
|
||||
# Copy Docker Files
|
||||
COPY .Build/Docker/* /tmp
|
||||
|
||||
# Configure BASE
|
||||
RUN bash /tmp/Configure.sh
|
||||
|
||||
# Setup bdsmaneger/core
|
||||
FROM bdsbase AS bdscore
|
||||
RUN apt update && apt install -y nginx && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/* /tmp/* /etc/nginx/sites-*/default && mkdir -p /home/bds/
|
||||
|
||||
# Copy Bds Maneger Core
|
||||
COPY ./ /opt/bds_core/
|
||||
WORKDIR /opt/bds_core/
|
||||
RUN chmod -v 7777 /opt/bds_core && chown thebds:thebds -v /opt/bds_core; chmod a+x bin/* && npm install --force && chmod -Rv 7777 /home && chown thebds:thebds -Rv /home && chmod a+x bin/*; mkdir -vp /home/bds/bds_core
|
||||
|
||||
# Non Root User
|
||||
# Set Non Root User
|
||||
USER thebds
|
||||
VOLUME [ "/home/bds/bds_core" ]
|
||||
VOLUME [ "/home/thebds/bds_core" ]
|
||||
|
||||
ENV TELEGRAM_TOKEN="null" DESCRIPTION="running Minecraft Bedrock Server on the docker by Bds Manager" WORLD_NAME="Bds Maneger Docker" GAMEMODE="survival" DIFFICULTY="normal" XBOX_ACCOUNT="false" PLAYERS="13" SERVER="bedrock" ENABLE_COMMANDS="false" BDS_DOCKER_IMAGE="true"
|
||||
# Set default ENVs to Bds Core
|
||||
ENV PLAYERS="5" \
|
||||
WORLD_NAME="The Ultimate Server" \
|
||||
DESCRIPTION="running Minecraft Server on Bds Maneger by Bds Manager Project" \
|
||||
GAMEMODE="survival" \
|
||||
DIFFICULTY="normal" \
|
||||
ENABLE_COMMANDS="false" \
|
||||
ACCOUNT="false" \
|
||||
SERVER="bedrock"
|
||||
|
||||
# Bds Maneger Core required ports
|
||||
EXPOSE 19132/udp 19133/udp 1932/tcp
|
||||
# Entrypint
|
||||
WORKDIR /opt/bds_core/
|
||||
ENTRYPOINT [ "node", "./bin/bds_maneger.js" ,"--DOCKER_IMAGE" ,"-s" ]
|
||||
|
||||
# Set Entrypint
|
||||
ENTRYPOINT [ "node", "./bin/Docker.js" ]
|
||||
|
||||
23
package-lock.json
generated
23
package-lock.json
generated
@@ -36,6 +36,7 @@
|
||||
"bds_maneger": "bin/bds_maneger.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"docker-run_build": "github:Sirherobrine23/Docker-Run_Build#main",
|
||||
"eslint": "^7.19.0",
|
||||
"husky": "^7.0.0",
|
||||
"nexe": "*",
|
||||
@@ -1811,6 +1812,19 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/docker-run_build": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "git+ssh://git@github.com/Sirherobrine23/Docker-Run_Build.git#1b6e28d3ec1ff635c7637dd0dffb2f394c6f0b27",
|
||||
"dev": true,
|
||||
"license": "GPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"js-yaml": "^4.1.0",
|
||||
"minimist": "^1.2.5"
|
||||
},
|
||||
"bin": {
|
||||
"docker-run_build": "bin/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/doctrine": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
|
||||
@@ -8439,6 +8453,15 @@
|
||||
"path-type": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"docker-run_build": {
|
||||
"version": "git+ssh://git@github.com/Sirherobrine23/Docker-Run_Build.git#1b6e28d3ec1ff635c7637dd0dffb2f394c6f0b27",
|
||||
"dev": true,
|
||||
"from": "docker-run_build@github:Sirherobrine23/Docker-Run_Build#main",
|
||||
"requires": {
|
||||
"js-yaml": "^4.1.0",
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"doctrine": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
"telegraf": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"docker-run_build": "github:Sirherobrine23/Docker-Run_Build#main",
|
||||
"eslint": "^7.19.0",
|
||||
"husky": "^7.0.0",
|
||||
"nexe": "*",
|
||||
|
||||
Reference in New Issue
Block a user