从零到一:用 Docker 轻松部署你的第一个 Web 应用

7 阅读4分钟

从零到一:用 Docker 轻松部署你的第一个 Web 应用

本文面向初学者,用通俗易懂的语言带你从 Docker 基础概念开始,一步步完成 Web 应用的容器化构建与云平台部署。


一、先搞懂:Docker 是什么?

Docker 是一个容器化平台,它能把你的应用、依赖库、系统环境打包成一个独立的「容器」,让应用在任何机器上都能稳定运行,彻底解决「在我电脑上能跑,换台机器就报错」的问题。

核心概念

  • 镜像(Image) :只读的模板文件,包含了运行应用所需的全部环境(系统、代码、依赖等),相当于应用的「绿色安装包」。
  • 容器(Container) :镜像运行的实例,是一个轻量级、隔离的进程,就像一个「迷你虚拟机」,但启动更快、资源占用更低。
  • Dockerfile:用来构建镜像的文本文件,里面记录了构建镜像的每一步指令。
  • Docker Hub / 镜像仓库:存放和分享镜像的公共 / 私有平台,你可以下载现成镜像,也能上传自己的作品。

二、编写 Dockerfile:给应用做「打包说明书」

我们以一个简单的 Python Flask Web 应用为例,先准备项目结构:

mywebapp/
├── app.py          # Web 应用代码
├── requirements.txt # 依赖清单
└── Dockerfile       # 镜像构建文件

1. 示例 app.py

from flask import Flask
app = Flask(__name__)
​
@app.route('/')
def hello():
    return "Hello, Docker! "if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

2. 示例 requirements.txt

Flask==2.3.3

3. 编写 Dockerfile

# 基础镜像:使用官方 Python 3.9 精简版镜像
FROM python:3.9-slim
​
# 设置容器内的工作目录
WORKDIR /app
​
# 复制依赖文件到容器,并安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
​
# 复制应用代码到容器
COPY app.py .
​
# 声明容器对外暴露的端口
EXPOSE 5000
​
# 容器启动时执行的命令(启动应用)
CMD ["python", "app.py"]

关键指令解析:

  • FROM:指定基础镜像,避免从零搭建环境。
  • WORKDIR:设定后续命令的执行目录。
  • COPY:将本地文件复制到容器内。
  • RUN:构建镜像时执行的命令(如安装依赖)。
  • EXPOSE:告知外部容器会使用的端口(仅声明,不实际开放)。
  • CMD:容器启动时的默认命令,只能有一个。

三、构建与运行:让容器在本地跑起来

1. 构建 Docker 镜像

在项目根目录执行以下命令,构建名为 mywebapp 的镜像:

docker build -t mywebapp .
  • -t:给镜像打上标签(命名),方便识别。
  • .:指定 Dockerfile 所在的当前目录。

2. 启动 Docker 容器

镜像构建完成后,运行容器并映射端口到本地:

docker run -d -p 5000:5000 --name mywebapp-container mywebapp
  • -d:后台运行容器(守护进程模式)。
  • -p 5000:5000:将主机的 5000 端口映射到容器的 5000 端口。
  • --name:给容器命名,方便后续管理。

3. 验证部署

打开浏览器访问 http://localhost:5000,如果看到 `Hello, Docker! ,说明本地部署成功!


四、云上部署:让你的应用被全世界访问

阿里云容器服务(ACK) 为例,介绍云平台部署流程:

1. 推送镜像到阿里云容器 Registry

  1. 登录阿里云容器 Registry 控制台,创建命名空间和镜像仓库。

  2. 本地登录 Registry(替换为你的账号信息):

    docker login --username=你的阿里云账号 registry.cn-hangzhou.aliyuncs.com
    
  3. 给本地镜像打标签(对应阿里云仓库地址):

    docker tag mywebapp:latest registry.cn-hangzhou.aliyuncs.com/你的命名空间/mywebapp:latest
    
  4. 推送镜像到仓库:

    docker push registry.cn-hangzhou.aliyuncs.com/你的命名空间/mywebapp:latest
    

2. 在阿里云创建容器应用

  1. 进入阿里云容器服务控制台,选择「集群」→「无状态」→「创建应用」。
  2. 填写应用名称,容器镜像选择刚才推送的阿里云镜像地址。
  3. 配置端口映射:容器端口 5000,服务端口 80(或自定义)。
  4. 选择公网访问方式(负载均衡 / 弹性网卡),完成创建。
  5. 等待部署完成后,通过公网 IP / 域名访问你的 Web 应用。

常见问题排查

  • 端口冲突:如果 5000 端口被占用,修改映射命令为 -p 5001:5000
  • 镜像构建失败:检查 Dockerfile 语法是否正确,依赖包名称是否拼写错误。
  • 容器无法访问:确认容器是否正常运行(docker ps),端口映射是否配置正确。

结语

Docker 让 Web 应用部署变得标准化、可移植、高效,从本地开发到云端部署,全程环境一致,大幅提升了开发与运维效率。