智睿享
白蓝主题五 · 清爽阅读
首页  > 软件指南

Docker部署应用:三步搞定本地服务上线

小王刚写完一个Python写的天气查询API,想让同事在公司内网直接试用,又不想折腾ref="/tag/414/" style="color:#8B0506;font-weight:bold;">服务器环境。他打开终端,敲了几行命令,不到两分钟,服务就跑起来了——靠的就是Docker部署应用

为什么不用手动装环境?

以前部署一个Node.js项目,得先确认服务器有没有装Node、版本对不对、npm依赖装全没、端口被占没……光是配环境就能耗掉半天。Docker把整个运行环境(代码+依赖+配置+系统库)打包成镜像,像U盘插上就能用,不挑机器,不踩坑。

三步走,部署一个Flask应用

假设你有个简单Flask项目,结构长这样:

.
├── app.py
├── requirements.txt
└── Dockerfile

在项目根目录写个 Dockerfile

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

再建个 requirements.txt,写上:

flask==2.3.3
gunicorn==21.2.0

然后终端里执行:

docker build -t weather-api .
docker run -d -p 8080:5000 --name weather weather-api

浏览器打开 http://localhost:8080,服务已经在线了。改代码?重新build再run,旧容器自动停,新容器顶上,不冲突、不留残渣。

上线前顺手加个.dockerignore

就像Git有.gitignore,Docker也建议配个 .dockerignore,把 __pycache__.gitvenv 这些不用打进镜像的文件夹列进去,镜像更干净、构建更快。

实际用起来的小经验

开发时常用 docker run -it --rm -p 5000:5000 -v $(pwd):/app weather-api 启动——带 -v 挂载本地代码,改完保存直接生效,不用反复build;上线用 -d 后台跑,加 --restart=unless-stopped,服务器重启后服务自动拉起;日志看 docker logs -f weather,比翻log文件直观多了。