Compare commits

..

3 Commits

Author SHA1 Message Date
e9f1bde8cc Check some fs operation to async 2023-12-04 16:24:35 +08:00
3537b842ec Update 2023-12-04 15:59:01 +08:00
8053e9940e Create the env file only if not empty 2023-12-04 15:15:11 +08:00
13 changed files with 68 additions and 75 deletions

View File

@ -131,7 +131,7 @@ Be sure to read the [guide](https://github.com/louislam/dockge/blob/master/CONTR
#### "Dockge"? #### "Dockge"?
"Dockge" is a coinage word which is created by myself. I originally hoped it sounds like `Dodge`, but apparently many people called it `Dockage`, it is also acceptable. "Dockge" is a coinage word which is created by myself. I hope it sounds like `Dodge`.
The naming idea came from Twitch emotes like `sadge`, `bedge` or `wokege`. They all end in `-ge`. The naming idea came from Twitch emotes like `sadge`, `bedge` or `wokege`. They all end in `-ge`.
@ -148,13 +148,13 @@ Yes, you can. However, you need to move your compose file into the stacks direct
3. In Dockge, click the " Scan Stacks Folder" button in the top-right corner's dropdown menu 3. In Dockge, click the " Scan Stacks Folder" button in the top-right corner's dropdown menu
4. Now you should see your stack in the list 4. Now you should see your stack in the list
#### Is Dockge a Portainer replacement? #### Is Dockge a Portainer replcement?
Yes or no. Portainer provides a lot of Docker features. While Dockge is currently only focusing on docker-compose with a better user interface and better user experience. Yes or no. Portainer provides a lot of Docker features. While Dockge is currently only focusing on docker-compose with a better user interface and better user experience.
If you want to manage your container with docker-compose only, the answer may be yes. If you want to manage your container with docker-compose only, the answer may be yes.
If you still need to manage something like docker networks, single containers, the answer may be no. If you still need to manage something like docker networks, signle containers, the answer may be no.
#### Can I install both Dockge and Portainer? #### Can I install both Dockge and Portainer?

View File

@ -3,16 +3,19 @@ import compareVersions from "compare-versions";
import packageJSON from "../package.json"; import packageJSON from "../package.json";
import { Settings } from "./settings"; import { Settings } from "./settings";
export const obj = {
version: packageJSON.version,
latestVersion: null,
};
export default obj;
// How much time in ms to wait between update checks // How much time in ms to wait between update checks
const UPDATE_CHECKER_INTERVAL_MS = 1000 * 60 * 60 * 48; const UPDATE_CHECKER_INTERVAL_MS = 1000 * 60 * 60 * 48;
const CHECK_URL = "https://dockge.kuma.pet/version"; const CHECK_URL = "https://dockge.kuma.pet/version";
class CheckVersion { let interval : NodeJS.Timeout;
version = packageJSON.version;
latestVersion? : string;
interval? : NodeJS.Timeout;
async startInterval() { export function startInterval() {
const check = async () => { const check = async () => {
if (await Settings.get("checkUpdate") === false) { if (await Settings.get("checkUpdate") === false) {
return; return;
@ -33,13 +36,13 @@ class CheckVersion {
if (checkBeta && data.beta) { if (checkBeta && data.beta) {
if (compareVersions.compare(data.beta, data.slow, ">")) { if (compareVersions.compare(data.beta, data.slow, ">")) {
this.latestVersion = data.beta; obj.latestVersion = data.beta;
return; return;
} }
} }
if (data.slow) { if (data.slow) {
this.latestVersion = data.slow; obj.latestVersion = data.slow;
} }
} catch (_) { } catch (_) {
@ -48,10 +51,21 @@ class CheckVersion {
}; };
await check(); check();
this.interval = setInterval(check, UPDATE_CHECKER_INTERVAL_MS); interval = setInterval(check, UPDATE_CHECKER_INTERVAL_MS);
}
} }
const checkVersion = new CheckVersion(); /**
export default checkVersion; * Enable the check update feature
* @param value Should the check update feature be enabled?
* @returns
*/
export async function enableCheckUpdate(value : boolean) {
await Settings.set("checkUpdate", value);
clearInterval(interval);
if (value) {
startInterval();
}
}

View File

@ -308,7 +308,6 @@ export class DockgeServer {
this.sendStackList(true); this.sendStackList(true);
}); });
checkVersion.startInterval();
}); });
gracefulShutdown(this.httpServer, { gracefulShutdown(this.httpServer, {

View File

@ -234,7 +234,7 @@ export class DockerSocketHandler extends SocketHandler {
socket.on("getDockerNetworkList", async (callback) => { socket.on("getDockerNetworkList", async (callback) => {
try { try {
checkLogin(socket); checkLogin(socket);
const dockerNetworkList = await server.getDockerNetworkList(); const dockerNetworkList = server.getDockerNetworkList();
callback({ callback({
ok: true, ok: true,
dockerNetworkList, dockerNetworkList,

View File

@ -297,12 +297,7 @@ export class Stack {
let res = await childProcessAsync.spawn("docker", [ "compose", "ls", "--all", "--format", "json" ], { let res = await childProcessAsync.spawn("docker", [ "compose", "ls", "--all", "--format", "json" ], {
encoding: "utf-8", encoding: "utf-8",
}); });
let composeList = JSON.parse(res.toString());
if (!res.stdout) {
return statusList;
}
let composeList = JSON.parse(res.stdout.toString());
for (let composeStack of composeList) { for (let composeStack of composeList) {
statusList.set(composeStack.Name, this.statusConvert(composeStack.Status)); statusList.set(composeStack.Name, this.statusConvert(composeStack.Status));

View File

@ -39,7 +39,7 @@ for (let lang in languageList) {
}; };
} }
const rtlLangs = [ "fa", "ar-SY", "ur", "ar" ]; const rtlLangs = [ "fa", "ar-SY", "ur" ];
export const currentLocale = () => localStorage.locale export const currentLocale = () => localStorage.locale
|| languageList[navigator.language] && navigator.language || languageList[navigator.language] && navigator.language

View File

@ -98,6 +98,5 @@
"reconnecting...": "Reconnecting…", "reconnecting...": "Reconnecting…",
"connecting...": "Connecting to the socket server…", "connecting...": "Connecting to the socket server…",
"url": "URL | URLs", "url": "URL | URLs",
"extra": "Extra", "extra": "Extra"
"newUpdate": "New Update"
} }

View File

@ -91,11 +91,5 @@
"Allowed commands:": "Comandi permessi:", "Allowed commands:": "Comandi permessi:",
"Internal Networks": "Reti interne", "Internal Networks": "Reti interne",
"External Networks": "Reti esterne", "External Networks": "Reti esterne",
"No External Networks": "Nessuna rete esterna", "No External Networks": "Nessuna rete esterna"
"reverseProxyMsg1": "Utilizzando un proxy inverso?",
"reverseProxyMsg2": "Controlla come configurarlo per WebSocket",
"Cannot connect to the socket server.": "Impossibile connettersi al server socket.",
"connecting...": "Connessione al server socket…",
"extra": "Extra",
"reconnecting...": "Riconnessione…"
} }

View File

@ -17,7 +17,7 @@
"editStack": "編集", "editStack": "編集",
"discardStack": "破棄", "discardStack": "破棄",
"saveStackDraft": "保存", "saveStackDraft": "保存",
"stackNotManagedByDockgeMsg": "このスタックはDockgeによって管理されていません。", "stackNotManagedByDockgeMsg": "このスタックはDockageによって管理されていません。",
"general": "一般", "general": "一般",
"scanFolder": "スタックフォルダをスキャン", "scanFolder": "スタックフォルダをスキャン",
"dockerImage": "イメージ", "dockerImage": "イメージ",

View File

@ -90,13 +90,5 @@
"Allowed commands:": "허용된 명령어:", "Allowed commands:": "허용된 명령어:",
"Internal Networks": "내부 네트워크", "Internal Networks": "내부 네트워크",
"External Networks": "외부 네트워크", "External Networks": "외부 네트워크",
"No External Networks": "외부 네트워크 없음", "No External Networks": "외부 네트워크 없음"
"reverseProxyMsg2": "여기서 WebSocket을 위한 설정을 확인해 보세요",
"downStack": "정지 & Down",
"reverseProxyMsg1": "리버스 프록시를 사용하고 계신가요?",
"Cannot connect to the socket server.": "소켓 서버에 연결하지 못했습니다.",
"connecting...": "소켓 서버에 연결하는 중…",
"extra": "기타",
"url": "URL | URL",
"reconnecting...": "재연결 중…"
} }

View File

@ -16,8 +16,8 @@
<span class="fs-4 title">Dockge</span> <span class="fs-4 title">Dockge</span>
</router-link> </router-link>
<a v-if="hasNewVersion" target="_blank" href="https://github.com/louislam/dockge/releases" class="btn btn-warning me-3"> <a v-if="hasNewVersion" target="_blank" href="https://github.com/louislam/dockge/releases" class="btn btn-info me-3">
<font-awesome-icon icon="arrow-alt-circle-up" /> {{ $t("newUpdate") }} <font-awesome-icon icon="arrow-alt-circle-up" /> {{ $t("New Update") }}
</a> </a>
<ul class="nav nav-pills"> <ul class="nav nav-pills">

View File

@ -622,7 +622,7 @@ export default {
greedy: true greedy: true
}, },
"keyword": { "keyword": {
pattern: /^\w*(?=[:=])/m, pattern: /^[^ :=]*(?=[:=])/m,
greedy: true greedy: true
}, },
"value": { "value": {

View File

@ -1,6 +1,6 @@
{ {
"name": "dockge", "name": "dockge",
"version": "1.3.2", "version": "1.2.0",
"type": "module", "type": "module",
"engines": { "engines": {
"node": ">= 18.0.0 && <= 18.17.1" "node": ">= 18.0.0 && <= 18.17.1"