Docker实战:使用Docker部署Web应用程序
前言
在掌握了Docker基础操作后,我们将进入实战环节 - 使用Docker部署Web应用程序。本文将从静态网站部署开始,逐步深入到自定义镜像构建,帮助开发者全面理解Docker在Web应用部署中的应用。
静态网站容器化部署
准备工作
首先我们从最简单的静态网站开始。Docker官方提供了一个名为dockersamples/static-site的示例镜像,非常适合初学者练习。
运行静态网站容器
执行以下命令启动容器:
docker run -d dockersamples/static-site
这里使用了-d参数让容器在后台运行(detached模式)。由于镜像是首次使用,Docker会自动从仓库拉取。
端口映射问题
初次运行后你会发现无法访问网站,这是因为我们没有指定端口映射。Docker容器默认是隔离的环境,需要显式地将容器端口映射到主机端口。
正确运行方式
先停止并移除之前的容器:
docker stop <容器ID>
docker rm <容器ID>
然后使用以下命令重新运行:
docker run --name static-site -e AUTHOR="你的名字" -d -P dockersamples/static-site
参数说明:
--name:为容器命名-e:设置环境变量-P:自动映射所有暴露的端口到主机随机端口
访问网站
使用docker port static-site查看端口映射情况,然后在浏览器访问对应的主机端口即可看到网站。
深入理解Docker镜像
镜像基础概念
Docker镜像是容器的基础,类似于面向对象中的"类"。可以通过docker images查看本地镜像列表。
镜像分为几种类型:
- 基础镜像:没有父镜像,通常是操作系统镜像
- 子镜像:基于基础镜像构建,添加了额外功能
- 官方镜像:由Docker官方维护
- 用户镜像:由用户创建并分享
镜像版本管理
与Git类似,Docker镜像也有版本控制。默认使用latest标签,但可以指定特定版本:
docker pull ubuntu:18.04
构建自定义镜像
项目准备
我们将构建一个展示随机猫咪图片的Flask应用镜像。创建项目目录结构如下:
flask-app/
├── app.py
├── requirements.txt
├── templates/
│ └── index.html
└── Dockerfile
Flask应用代码
app.py是应用主文件,从预设的URL列表中随机选择一张猫咪图片展示。
requirements.txt指定了Python依赖(Flask框架)。
templates/index.html是网页模板,定义了展示样式。
Dockerfile详解
Dockerfile是构建镜像的蓝图,我们基于轻量级的Alpine Linux构建:
# 基础镜像
FROM alpine:3.5
# 安装Python和pip
RUN apk add --update py2-pip
# 安装Python依赖
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt
# 复制应用文件
COPY app.py /usr/src/app/
COPY templates/index.html /usr/src/app/templates/
# 暴露端口
EXPOSE 5000
# 启动命令
CMD ["python", "/usr/src/app/app.py"]
构建与运行
在Dockerfile所在目录执行构建:
docker build -t my-flask-app .
运行容器:
docker run -p 5000:5000 my-flask-app
现在访问http://localhost:5000就能看到随机猫咪图片了!
总结
通过本文,我们学习了:
- 使用现有镜像部署静态网站
- 理解Docker镜像的基本概念
- 编写Dockerfile构建自定义镜像
- 部署Python Flask应用
这些技能是使用Docker部署Web应用的基础,掌握了它们,你就已经迈入了容器化部署的大门。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



