---
title: "部署第一个应用"
description: "通过 Nginx 示例完成创建分组、部署应用、发布端口和验证访问。"
---

> Documentation Index
> Fetch the complete documentation index at: https://cdelivery.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 部署第一个应用

本教程部署一个无需持久化数据的 Nginx Web 应用。完成后，你应该能在浏览器中看到 Nginx 欢迎页。

## 开始之前

使用首次设置创建的 Admin 账户登录。服务器需要能从 Docker Hub 下载镜像，TCP 8080 应空闲并允许你的浏览器访问。

Operator 可以创建应用，但创建分组需要 Admin。使用已有分组时，可以直接进入该分组部署。

## 操作步骤

1. **创建分组**

   打开分组管理，创建：

   | 字段 | 示例 |
   | - | - |
   | 名称 | `demo` |
   | 描述 | 入门示例 |

   名称使用小写字母、数字和连字符。分组会提供应用间通信网络，详细规则见[分组管理](/docs/zh-cn/administration/groups/)。
2. **配置应用**

   在 `demo` 分组旁点击创建应用，填写：

   | 设置 | 值 |
   | - | - |
   | 名称 | `hello-web` |
   | 镜像 | `nginx:stable-alpine` |
   | 镜像凭据 | 留空，使用公开镜像 |
   | 启动命令 | 留空，使用镜像默认启动方式 |
   | 副本 | 固定 1 |
   | 文件与存储 | 不添加数据卷或配置文件 |
3. **发布端口**

   在端口发布设置中添加：

   | 协议 | 容器端口 | 发布端口 |
   | - | - | - |
   | TCP | 80 | 8080 |

   这里的 80 是 Nginx 在容器内监听的端口，8080 是客户端访问服务器时使用的端口。镜像用法参考 [Nginx 官方镜像](https://hub.docker.com/_/nginx)。
4. **部署应用**

   检查表单并创建应用，返回应用概览后等待副本进入运行状态。

## 验证访问

在你的电脑上打开 `http://SERVER_IP:8080`，或者执行下面的命令。将 `SERVER_IP` 替换为实际可达的服务器地址。

```sh
curl -I http://SERVER_IP:8080
```

预期看到 Nginx 欢迎页或 HTTP 200 响应。

远程服务器只允许 SSH 访问时，在你的电脑上执行：

```sh
ssh -L 9000:127.0.0.1:9000 -L 8080:127.0.0.1:8080 your-user@server.example.com
```

如果使用 SSH 隧道，保持会话打开，改为在你的电脑上执行：

```sh
curl -i http://localhost:8080
```

## 遇到问题

| 现象 | 优先检查 |
| --- | --- |
| 镜像下载失败 | 镜像拼写、Docker Hub 连通性、仓库限制及错误信息 |
| 副本持续等待 | 服务器状态、可用资源及额外设置的调度条件 |
| 容器不断重启 | 应用日志、是否误填自定义启动命令 |
| 副本运行但访问超时 | 8080 的防火墙规则、访问地址、隧道 |
| 连接被拒绝或响应异常 | 容器端口是否为 80、协议是否为 TCP |

## 下一步

- 阅读[创建与部署](/docs/zh-cn/guides/apps/create/)，了解完整表单和模板。
- 使用[域名与路由](/docs/zh-cn/guides/networking/routing/)配置业务域名。
- 使用[配置检查](/docs/zh-cn/guides/release-safety/xhealth/)验证应用的实际响应。

完成练习后，可以按[删除应用](/docs/zh-cn/guides/apps/delete/)移除 `hello-web`。这个示例未创建持久化数据卷。

Source: https://cdelivery.dev/docs/zh-cn/getting-started/first-app/index.mdx
