From 626fddf4abe965af6f5389cad8df006df35af58c Mon Sep 17 00:00:00 2001 From: yyXDyy <117278432+yyXDyy@users.noreply.github.com> Date: Mon, 18 Aug 2025 13:21:06 +0000 Subject: [PATCH] feat:China-Optimized Debian Image --- OS/debian-ssh/project/README.md | 39 +++++++ OS/debian-ssh/project/Readme.md | 140 -------------------------- OS/debian-ssh/project/entrypoint.sh | 28 +++++- OS/debian-ssh/project/hello.sh | 9 +- OS/debian-ssh/update_cn_dockerfile.sh | 8 +- 5 files changed, 80 insertions(+), 144 deletions(-) create mode 100644 OS/debian-ssh/project/README.md delete mode 100644 OS/debian-ssh/project/Readme.md diff --git a/OS/debian-ssh/project/README.md b/OS/debian-ssh/project/README.md new file mode 100644 index 00000000..9a697ad4 --- /dev/null +++ b/OS/debian-ssh/project/README.md @@ -0,0 +1,39 @@ +## Pure Debian Environment Example (Next.js) + +This is a “pure Debian 12” development environment on Sealos. It shows how to quickly set up and run a Next.js app inside a clean Debian system. The workflow feels just like local development—no need to manage Docker yourself. + +### Project Description +The project provides a minimal yet practical developer experience: once in Devbox, install Node.js (via nvm) and create a Next.js sample. You can extend it to your own stack as needed. + +### Environment +- OS: Debian 12 (bookworm) +- Platform: Sealos Devbox (cloud-based, ready to use) +- User & Privileges: default user `devbox` with passwordless `sudo` +- Networking & SSH: `sshd` enabled, public key login supported +- Package Mirrors: Tsinghua mirror (CN) supported for faster installs in Mainland China + +### Project Execution +- Development mode (recommended): enter Devbox, then install Node.js (nvm) and run Next.js dev server. +```bash +# 1) Install nvm (recommended) +curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash +export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" + +# 2) Install & use Node.js LTS (includes npm) +nvm install --lts && nvm use --lts + +# 3) Create and start a Next.js sample +npx create-next-app@latest my-next-app +cd my-next-app +npm run dev # default port 3000 +``` +- Access: open the project’s public URL in Devbox, and make sure the port is set to 3000. + +- Production mode (optional): after development, build and run in production mode. +```bash +npm run build +npm run start +``` + +### Devbox: Code. Run. Ship. We handle the rest. +DevBox: Code. Build. Deploy. We've Got the Rest. With DevBox, you can focus entirely on writing great code while we handle the infrastructure, scaling, and deployment. Seamless development from start to production. \ No newline at end of file diff --git a/OS/debian-ssh/project/Readme.md b/OS/debian-ssh/project/Readme.md deleted file mode 100644 index bf569b4e..00000000 --- a/OS/debian-ssh/project/Readme.md +++ /dev/null @@ -1,140 +0,0 @@ -# 快速开始 - -> 本指南介绍如何使用 Sealos Devbox 创建、开发和部署 Next.js 应用。内容涵盖项目设置、使用 Cursor IDE 进行远程开发以及云端部署。 - -## 创建 Devbox 项目 - -1. 点击 Sealos 桌面的 Devbox,然后点击新建项目按钮,创建一个新项目。 - -2. 在运行环境部分,选择 Next.js 作为开发框架。然后设置项目的CPU和内存。 - -![quick-start-1](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-1.png?raw=true) - -3. 设置网络配置: - -- 容器暴露端口设置为 3000,这是 Next.js 开发环境的默认端口。(如果需要额外的端口,请点击添加端口) -- 开启公网访问,这会自动生成一个随机的公网域名。(如果想使用自定义域名,请点击自定义域名) - -> 请确保容器暴露端口与 Next.js 应用配置的端口一致。如果你修改了 Next.js 配置中的端口,记得在此处同步更新。 - -![quick-start-2](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-2.png?raw=true) - -4. 点击右上角的创建来创建项目。 - -## 连接 Cursor IDE - -创建项目后,你可以在 Devbox 项目列表中找到它。每个项目都有一个操作列,可以在操作列的下拉框中切换不同的 IDE。 - -![quick-start-3](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-3.png?raw=true) - -1. 启动本地 Cursor IDE: - -- 选择操作列的下拉框中的 Cursor 来启动本地 Cursor IDE。 - -2. 本地 Cursor IDE 连接 Devbox: - -- Cursor IDE 会弹出窗口提示你安装 Devbox 插件,安装后即可通过 SSH 与 Devbox 连接。 - -> 你可以随时切换不同的 IDE(VSCode、VSCode Insiders、Cursor 或 Windsurf)。 - -## 开发 - -1. 本地 Cursor IDE 成功连接 Devbox 后,你就可以在 Cursor IDE 中直接编辑项目文件。 - -![quick-start-4](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-4.png?raw=true) - -> 通过远程连接,你可以在 Devbox 运行时运行代码,确保开发与生产环境一致,并在任何地方、任何安装了 Cursor 的设备上访问项目,方便团队协作。 - -2. 调试 Next.js 应用: - -- 打开 Cursor IDE 终端。 -- 导航到项目目录。 -- 运行以下命令以开发模式启动 Next.js 服务: - -```bash -npm run dev -``` - -3. 访问正在运行的应用: - -- 打开 Sealos 桌面的 Devbox。 -- 找到你的项目并点击详情按钮。 -- 点击外网地址。 - -![quick-start-5](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-5.png?raw=true) - -4. 成功打开你的 Next.js 应用。 - -![quick-start-6](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-6.png?raw=true) - -## 发布 - -开发并测试 Next.js 应用后,你可以将其打包为 OCI 镜像(即容器镜像),这样可以方便地进行版本控制并准备部署。 - -1. 在 Cursor IDE 终端中,导航到项目目录并运行构建命令: - -```bash -npm run build -``` - -此命令在 `.next` 目录中生成可用于生产的 Next.js 应用版本。 - -2. 转到项目详情页面: - -- 打开 Sealos 桌面的 Devbox。 -- 找到你的项目并点击详情按钮。 - -3. 在详情页面,找到“版本历史”部分。 - -4. 点击“版本历史”右上角的“发布版本”按钮。 - -5. 在弹出的“发布版本”对话框中,提供以下信息: - -- 镜像名:预填为项目名。 -- 版本号:输入版本号(如:v1.0)。 -- 版本描述:简要描述版本内容(如:“初始版本”或“修复登录问题”)。 - -![quick-start-7](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-7.png?raw=true) - -6. 填写完毕后,点击“发版”按钮。 - -7. 系统会处理发布,完成后,你会在“版本历史”中看到新版本的记录,包括版本号、状态、创建时间和描述。 - -![quick-start-8](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-8.png?raw=true) - -通过这些步骤,你已成功创建 Next.js 应用的 OCI 镜像。此镜像可以用于部署或与团队共享,每次发布都会创建一个代码快照,方便版本管理和回滚。 - -> 每当有重大更改或里程碑时,记得发布新版本。这能帮助保持开发历史清晰,并使部署和协作更加顺畅。 - -## 部署 - -将 Next.js 应用发布为 OCI 镜像后,你可以将其部署到 Sealos Cloud 以供生产使用。操作步骤如下: - -1. 在项目详情页面中,找到“版本历史”部分。 - -2. 找到需要部署的版本,点击“操作”栏中的“上线”按钮。 - -3. 系统会将你重定向到 Sealos 的应用管理界面。 - -4. 在应用管理中,按照部署向导配置应用设置。通常包括: - -- 设置应用名称 -- 设置资源限制(CPU和内存) -- 设置环境变量 -- 设置卷或持久存储 - -![quick-start-9](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-9.png?raw=true) - -5. 配置完毕后,点击右上角的“部署应用”按钮开始部署。 - -6. 部署完成后,进入应用详情页面。 - -7. 当状态变为“running”时,点击“公网地址”,即可在新标签页中打开你的 Next.js 应用。 - -![quick-start-10](https://github.com/labring/sealos/blob/main/docs/5.0/i18n/zh-Hans/user-guide/devbox/images/quick-start-10.png?raw=true) - -通过这些步骤,你已成功将 Next.js 应用部署到 Sealos Cloud。现在,用户可以通过公网地址访问应用。 - -> 你可以随时通过 Devbox 创建新版本,并重复此过程更新应用。 - -此工作流程使你能够在云环境中开发和调试 Next.js 应用,同时使用本地 IDE。外部地址使你可以轻松地与团队或客户共享应用,任何地方都能访问。 \ No newline at end of file diff --git a/OS/debian-ssh/project/entrypoint.sh b/OS/debian-ssh/project/entrypoint.sh index 4c5199e5..069a3878 100644 --- a/OS/debian-ssh/project/entrypoint.sh +++ b/OS/debian-ssh/project/entrypoint.sh @@ -1,3 +1,29 @@ #!/bin/bash +app_env=${1:-development} -./hello.sh +# Define build target +build_target="hello_world" + +# Development environment commands +dev_commands() { + echo "Running development environment commands..." + export ENV="development" + ./hello.sh "$app_env" +} + +# Production environment commands +prod_commands() { + echo "Running production environment commands..." + export ENV="production" + ./hello.sh + echo "Server started in background. Check server.log for details." +} + +# Check environment variables to determine the running environment +if [ "$app_env" = "production" ] || [ "$app_env" = "prod" ] ; then + echo "Production environment detected" + prod_commands +else + echo "Development environment detected" + dev_commands +fi \ No newline at end of file diff --git a/OS/debian-ssh/project/hello.sh b/OS/debian-ssh/project/hello.sh index 2b2fb28f..196c0925 100755 --- a/OS/debian-ssh/project/hello.sh +++ b/OS/debian-ssh/project/hello.sh @@ -1,5 +1,12 @@ #!/bin/bash +MODE="${1:-${ENV:-development}}" + +echo "Hello, Sealos user. welcome to Debian!" +echo "You’re now in ${MODE} mode. Have a smooth journey and happy coding." + while :; do - { echo -ne "HTTP/1.1 200 OK\r\nContent-Length: $(echo -n "Hello, World!")\r\n\r\nHello, World!"; } | nc -l -p 8080 -q 1 + BODY="Hello, World! (mode: ${MODE})" + LEN=${#BODY} + { echo -ne "HTTP/1.1 200 OK\r\nContent-Length: ${LEN}\r\nContent-Type: text/plain; charset=utf-8\r\n\r\n${BODY}"; } | nc -l -p 8080 -q 1 done diff --git a/OS/debian-ssh/update_cn_dockerfile.sh b/OS/debian-ssh/update_cn_dockerfile.sh index 9a3ffa09..6b2ce05c 100755 --- a/OS/debian-ssh/update_cn_dockerfile.sh +++ b/OS/debian-ssh/update_cn_dockerfile.sh @@ -6,5 +6,9 @@ TMP_DOCKERFILE="${DOCKERFILE}tmp" cp $DOCKERFILE $TMP_DOCKERFILE # 修正sed命令 -sed -i '$i\ -COPY /OS/debian-ssh/debian.sources /etc/apt/sources.list.d/debian.sources' "$TMP_DOCKERFILE" \ No newline at end of file +sed -i '/COPY \/script\/startup.sh \/usr\/start\/startup.sh/a\ +RUN apt-get update && apt-get install -y ca-certificates && apt-get clean && rm -rf /var/lib/apt/lists/*' "$TMP_DOCKERFILE" + +# 在ca-certificates安装后插入清华源配置 +sed -i '/RUN apt-get update && apt-get install -y ca-certificates/a\ +COPY /OS/debian-ssh/debian.sources /etc/apt/sources.list.d/debian.sources' "$TMP_DOCKERFILE"