From 5731c3d461b37c03d0dd86d61689affa2b66fe42 Mon Sep 17 00:00:00 2001 From: zhengkunwang223 Date: Tue, 26 Sep 2023 15:13:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20Node.js=20?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/node/18.18.0/data.yml | 1 + apps/node/18.18.0/docker-compose.yml | 23 +++++++++++++++++++++++ apps/node/18.18.0/run.sh | 27 +++++++++++++++++++++++++++ apps/node/README.md | 21 +++++++++++++++++++++ apps/node/data.yml | 19 +++++++++++++++++++ apps/node/logo.png | Bin 0 -> 7710 bytes 6 files changed, 91 insertions(+) create mode 100644 apps/node/18.18.0/data.yml create mode 100644 apps/node/18.18.0/docker-compose.yml create mode 100644 apps/node/18.18.0/run.sh create mode 100644 apps/node/README.md create mode 100644 apps/node/data.yml create mode 100644 apps/node/logo.png diff --git a/apps/node/18.18.0/data.yml b/apps/node/18.18.0/data.yml new file mode 100644 index 000000000..fcc6ed694 --- /dev/null +++ b/apps/node/18.18.0/data.yml @@ -0,0 +1 @@ +additionalProperties: \ No newline at end of file diff --git a/apps/node/18.18.0/docker-compose.yml b/apps/node/18.18.0/docker-compose.yml new file mode 100644 index 000000000..f6a77239d --- /dev/null +++ b/apps/node/18.18.0/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3' +services: + node: + image: node:${NODE_VERSION} + container_name: ${CONTAINER_NAME} + working_dir: /app + volumes: + - ${CODE_DIR}:/app + - ./run.sh:/run.sh + - ./.env:/.env + command: bash /run.sh + networks: + - 1panel-network + ports: + - ${HOST_IP}:${PANEL_APP_PORT_HTTP}:${NODE_APP_PORT} + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:${NODE_APP_PORT} || exit 1"] + interval: 30s + timeout: 5s + retries: 20 +networks: + 1panel-network: + external: true diff --git a/apps/node/18.18.0/run.sh b/apps/node/18.18.0/run.sh new file mode 100644 index 000000000..3187406d3 --- /dev/null +++ b/apps/node/18.18.0/run.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +source /.env + +if [[ "$PACKAGE_MANAGER" == "npm" ]]; then + npm config set registry $CONTAINER_PACKAGE_URL +elif [[ "$PACKAGE_MANAGER" == "yarn" ]]; then + yarn config set registry $CONTAINER_PACKAGE_URL +fi + +if [[ "$RUN_INSTALL" -eq "1" ]]; then + if [[ "$PACKAGE_MANAGER" == "npm" ]]; then + npm install + elif [[ "$PACKAGE_MANAGER" == "yarn" ]]; then + yarn install + else + echo "未知的 PACKAGE_MANAGER: $PACKAGE_MANAGER" + exit 1 + fi +fi + + +if [[ "$PACKAGE_MANAGER" == "npm" ]]; then + npm run $EXEC_SCRIPT +elif [[ "$PACKAGE_MANAGER" == "yarn" ]]; then + yarn run $EXEC_SCRIPT +fi diff --git a/apps/node/README.md b/apps/node/README.md new file mode 100644 index 000000000..aa2e5dade --- /dev/null +++ b/apps/node/README.md @@ -0,0 +1,21 @@ +# Node.js + +Node.js是一个流行的服务器端运行环境,允许开发者构建动态和可扩展的Web应用程序和网络化软件。 + +## 主要功能: + +- **非阻塞I/O**:Node.js以其非阻塞、事件驱动的架构而闻名。这意味着它可以高效地处理大量并发连接,而无需等待一个操作完成后再进行下一个操作,这使其非常适合构建实时应用程序。 + +- **JavaScript**:Node.js使用JavaScript进行服务器端编程,通过允许开发者在应用程序的客户端和服务器端都使用相同的语言,简化了Web应用程序开发。 + +- **包管理**:Node.js拥有一个强大的包管理器,称为npm(Node Package Manager),它允许开发者轻松地安装、管理和共享代码库,从而加速开发过程。 + +- **跨平台**:Node.js可以在多种操作系统上运行,包括Windows、Linux和macOS,这使其非常灵活,能够满足不同的部署需求。 + +- **事件驱动**:Node.js基于事件驱动的编程模型,开发者可以轻松地监听和响应事件,使其特别适合构建实时、交互式的应用程序。 + +- **模块化**:Node.js支持模块化编程,使开发者能够将代码分成小块,提高了可维护性和可扩展性。 + +- **社区支持**:Node.js拥有一个庞大的开发者社区,因此可以轻松找到各种模块和库来扩展其功能,也能够获得社区的支持和反馈。 + +- **单线程**:Node.js通常运行在单线程中,但通过事件循环机制和异步操作,能够实现高效的并发处理,同时减少了多线程开发时可能出现的问题。 \ No newline at end of file diff --git a/apps/node/data.yml b/apps/node/data.yml new file mode 100644 index 000000000..39a8a2c8c --- /dev/null +++ b/apps/node/data.yml @@ -0,0 +1,19 @@ +name: Node.js +tags: + - 运行环境 +title: Node.js 运行环境 +type: 运行环境 +description: Node.js 运行环境 +additionalProperties: + key: node + name: Node.js + tags: + - Runtime + shortDescZh: Node.js 运行环境 + shortDescEn: Node.js Runtime + type: node + crossVersionUpdate: false + limit: 0 + recommend: 101 + website: https://nodejs.org/en + github: https://github.com/nodejs diff --git a/apps/node/logo.png b/apps/node/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..10bbb7e5893ee7b8ac2717eaf67f98e7da7ff8ba GIT binary patch literal 7710 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 z z0G7!t7;ba+rJZZk)vbEuoUtI-14;*N4m409a$%6<<%q`{B?17>Hx>(D4+Sme%q^>m zHhRo@j#mJ8#P`fck;HOGTe-eQ2jHK0eDq^w^zK~^chkZ?fPrvFtx#wK4`)Uty|%#D zTZ=;wLax)~J1ys+$^V+Z|C^8Wg;%&+#EQ+fe3a;W8 zACSy(+L&phJkgbDrzH1v-u~|7^C+#K?or`Rl3JWwINs8yG6mRXDwC z^C+9cryKiZtvM95eU9)e3cH?FVBjP2dEx~A92*M2G2R7JI$MDMB|K%$6g^D)wG58Y zEr0y7=6E^mkmvbb4h|J;97b*NzPLd)k$9|>ShkY>N$y#QPXe?9<^uS07Sh!EpP45v zvCABvCp&?mJg4Pr>?*`EKY6l~aWXy8edqNuBC`NuF;2=3@zMcHw5vb9)4h$HxIrp` zd~8fB|Hwq89la5$C?bbQ%lh#(D-Tinz~0BQ7D!|zJqQ?$59j~36Mfi}KP{1QG$PfI z5E_UlN@M2=b3Fg85xZE1p|}!J`bXblvo$GkkpH66lM@gAQJ4Sgl>X9hl@bcQ3?8Zz P315Jgx<0yA)eiSRWwIF} literal 0 HcmV?d00001