做开发或者运维的朋友都知道,手动部署服务太折腾了。尤其是项目一多,每次更新代码都要重新配置环境、启动容器,光是这些重复操作就能让人头大。最近我试了几款网络容器自动化部署工具,确实省了不少事。
Docker Compose:小项目首选
如果你的项目结构不复杂,比如一个Web服务加个数据库,Docker Compose 就够用了。写个 yaml 文件,把服务都定义好,一条命令就能全拉起来。
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
保存为 docker-compose.yml,执行 docker-compose up,两个服务就一起跑起来了。改代码也不用重新配环境,停掉再启一下就行。
Kubernetes + Helm:中大型项目的标配
项目一上规模,就得考虑集群管理了。Kubernetes 虽然学习成本高点,但一旦搭起来,扩缩容、故障恢复都自动搞定。配合 Helm 使用,部署就像装软件一样简单。
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/nginx
Helm 把复杂的 Kubernetes 配置打包成“图表”,一键安装,特别适合团队协作和多环境部署。
Portainer:可视化管理更省心
不是所有人习惯敲命令。Portainer 提供图形界面,能直接在浏览器里管理容器、查看日志、重启服务。对于刚接触容器技术的人来说,是个友好的入门工具。
部署 Portainer 本身也很简单:
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
打开浏览器访问 http://localhost:9000,就能看到所有运行中的容器,点几下鼠标就能完成部署操作。
GitLab CI/CD:代码提交自动部署
我们团队现在用 GitLab 做代码托管,顺便把部署也自动化了。每次 push 代码,CI/CD 流水线自动构建镜像、推送到仓库,再更新到服务器上的容器。
deploy:
stage: deploy
script:
- docker build -t myapp:$CI_COMMIT_SHA .
- docker push myapp:$CI_COMMIT_SHA
- ssh user@server "docker pull myapp:$CI_COMMIT_SHA && docker restart myapp"
早上改完bug,提交代码后喝杯咖啡的功夫,线上服务就已经更新完了。
这些工具各有侧重,Docker Compose 适合个人项目,Kubernetes 适合复杂系统,Portainer 让操作更直观,GitLab CI/CD 实现真正的自动化。选哪个,看你手上的活儿有多重。