Docker 部署网站实战:从安装到容器化上线一次讲清


很多站长现在还习惯在 VPS 上直接装环境:装 Nginx、装 PHP、装 MySQL,一通配置下来少说半天。换台服务器、重装系统,又得从头再来一遍。用 Docker 之后,环境跟应用一起打包成镜像,换机器直接“拎包入住”,部署一个网站从半天缩短到几分钟。这篇文章我就按真实操作顺序,把 Docker 从安装到上线一个网站的完整流程讲清楚,适合已经有一台 VPS、想试试容器化的站长。

一、Docker 到底解决了什么问题

先说结论:Docker 的核心价值是三句话——环境一致、部署可复制、资源占用低。

  • 环境一致:本机能跑,服务器上大概率也能跑,因为运行环境全部打包在镜像里,不会再出现“在我电脑上是好的”这种问题。
  • 部署可复制:一个 docker-compose.yml 文件,就是整站部署的“施工图纸”。迁移服务器时拷贝过去,一条命令拉起所有服务。
  • 资源占用低:容器共享宿主机内核,比传统虚拟机轻得多,一台 2G 内存的 VPS 跑几个小站点毫无压力。

当然 Docker 也有学习成本,但对站长来说,花一晚上换来以后每次迁移省半天,这笔账非常划算。

二、安装 Docker 与配置镜像加速

大部分 Linux 发行版都能用官方脚本一键安装:

curl -fsSL https://get.docker.com | sh

安装完成后启动服务并设置开机自启:

systemctl enable --now docker

国内服务器拉取 Docker Hub 镜像经常超时,建议配置镜像加速器。编辑 /etc/docker/daemon.json(没有就新建):

{ "registry-mirrors": ["https://docker.m.daocloud.io"] }

改完重启 Docker 生效:

systemctl daemon-reload && systemctl restart docker

用 docker version 确认安装成功即可。

三、用 docker-compose 一键部署 Nginx + PHP 站点

现在主流做法是用 docker-compose 编排多个容器,先安装它:

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

在网站目录下新建 docker-compose.yml:

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./www:/usr/share/nginx/html
      - ./conf:/etc/nginx/conf.d
    restart: always
  php:
    image: php:8.2-fpm
    volumes:
      - ./www:/var/www/html
    restart: always

然后一条命令启动:

docker-compose up -d

把网站文件放进 www 目录、Nginx 配置放进 conf 目录,浏览器访问服务器 IP 就能看到站点。

四、数据库也容器化,数据持久化要重视

网站通常离不开数据库,同样用容器跑 MySQL:

mysql:
  image: mysql:8.0
  environment:
    MYSQL_ROOT_PASSWORD: "你的强密码"
    MYSQL_DATABASE: "blog"
  volumes:
    - ./mysql-data:/var/lib/mysql
  restart: always

注意 data 目录必须挂载出来,否则容器一删数据全没。备份数据也很简单,一条命令导出:

docker exec 容器名 mysqldump -uroot -p密码 blog > backup.sql

五、HTTPS 证书与域名反代

容器部署和传统部署一样要上 HTTPS。推荐的做法是用 certbot 免费签发证书:

certbot certonly --standalone -d 你的域名

再把证书挂载进 Nginx 容器,或者在宿主机 Nginx 里配好反向代理,把请求转发到容器映射的 80 端口。域名解析指向服务器 IP 后,就可以用 HTTPS 访问了。

六、日常运维:日志、更新与备份

容器化之后,日常运维命令要熟记几个:

docker-compose ps            # 查看服务状态
docker-compose logs -f       # 实时查看日志
docker-compose exec web bash # 进入容器排查问题

镜像有更新时,两条命令搞定升级:

docker-compose pull && docker-compose up -d

最后再强调一次:无论用不用 Docker,数据备份永远是底线。数据卷目录、数据库导出文件,记得定时同步到异地。

结语

Docker 没有想象中那么难,也没有传说中那么神,但它确实能大幅降低站长日常维护和迁移的痛苦。建议先拿一个不重要的站点练手,熟悉之后再逐步把主力站迁移到容器化方案。有任何踩坑经验,也欢迎在评论区交流。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

Docker 部署网站实战:从安装到容器化上线一次讲清

VPS 选购避坑指南:线路、带宽、配置与防御怎么选才不花冤枉钱

评 论