diff --git a/apps/node/18.18.0/data.yml b/apps/node/18.18.0/data.yml new file mode 100644 index 00000000..fcc6ed69 --- /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 00000000..f6a77239 --- /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 00000000..3187406d --- /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 00000000..aa2e5dad --- /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 00000000..39a8a2c8 --- /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 00000000..10bbb7e5 Binary files /dev/null and b/apps/node/logo.png differ