Docker 容器化部署 Web 应用实战
Docker 容器化部署 Web 应用实战——云数方舟(YunArk) 香港 / 美国 节点环境标准化
在多台 香港独立服务器 与 美国独立服务器 之间迁移网站时,“本地能跑,服务器报错”是运维人员的噩梦。Docker 通过容器化技术,将应用及其依赖打包成一个镜像,实现了环境的一致性、部署的快速性和资源的隔离性。本文以部署 LNMP(Linux + Nginx + MySQL + PHP)环境为例,讲解如何在云数方舟节点上标准化部署 Web 应用。
一、为什么要在独立服务器上使用 Docker?
- 环境一致性:消除“在我这能跑”的问题,开发、测试、生产环境完全一致。
- 快速回滚:镜像版本化管理,一旦新版本出问题,秒级回退到上一个镜像。
- 资源隔离:不同站点运行在独立容器中,互不影响,避免一个站点中毒拖垮整台服务器。
- 弹性迁移:结合 菲律宾独立服务器 或其他节点做容灾时,直接迁移镜像即可。
二、编写 Dockerfile 定制运行环境
以 PHP 网站为例,在项目根目录创建 Dockerfile:
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo pdo_mysql gd
WORKDIR /var/www/html
COPY . .
这个文件定义了基于 PHP 8.2、安装了 MySQL 扩展和 GD 库的运行时环境。
三、使用 docker-compose 编排多容器应用
Web 应用通常需要 Nginx、PHP、MySQL 协同工作。创建 docker-compose.yml:
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
- ./nginx/conf.d:/etc/nginx/conf.d
depends_on:
- php
php:
build: .
volumes:
- ./html:/var/www/html
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 强密码
volumes:
- ./mysql/data:/var/lib/mysql
一条命令 docker-compose up -d,即可在 美国洛杉矶独立服务器 上启动整套环境。
四、数据持久化与备份策略
容器是无状态的,数据必须存储在宿主机上。
- 代码持久化:通过 Volume 挂载,将宿主机的代码目录映射到容器内。
- 数据库持久化:将 MySQL 的数据目录
/var/lib/mysql映射到宿主机(如./mysql/data)。 - 备份:直接打包宿主机上的数据目录,或通过
docker exec进入容器执行mysqldump。
五、结合云数方舟节点的实战建议
- 香港节点:作为面向大陆用户的接入层,Docker 中主要运行 Nginx 和 PHP-FPM,处理动态请求。
- 美国节点:作为后端处理层,Docker 中运行耗时任务(如视频转码、批量推理),利用 美国大带宽服务器 的优势。
- 安全:Docker 容器虽隔离,但宿主机仍需配合 DDoS 防护 和防火墙策略,避免端口暴露风险。
📌 查看云数方舟容器化部署方案:
云数方舟官网 |
香港独立服务器(接入层) |
美国洛杉矶独立服务器(处理层) |
美国大带宽服务器(数据传输) |
DDoS 防护解决方案
本文由 云数方舟(YunArk) 原创发布,转载请注明出处。