新手也能懂的Docker部署教程,一键上线自己的项目

今天就给新手们带来一篇零门槛Docker部署教程,不用懂Docker底层原理,不用记复杂命令,全程实操、步骤清晰,以PHP项目为示例,手把手教你用Docker“一键部署”,10分钟搞定项目上线,不管是本地测试还是云服务器部署,都能直接复用,彻底解决新手部署难的痛点。

前置说明:本文全程用PHP 8.3(最新稳定版)演示,适配PHP 8.0+所有版本,无需依赖任何框架,测试环境覆盖Windows、Mac、CentOS(云服务器常用系统),所有命令、配置文件均可直接复制,新手跟着做就能成功,完全贴合CSDN“实操落地、新手友好”的推流逻辑。

一、前置准备(3分钟搞定,零门槛)

不用复杂配置,只需准备2件事:安装Docker(一键安装,无需手动配置环境)、准备一个简单的PHP项目(直接复制,无需修改),全程3分钟搞定,新手无压力。

1. 安装Docker(分系统,一键操作)

Docker支持Windows、Mac、Linux三大系统,新手优先推荐安装“Docker Desktop”(图形化界面,操作更简单),避免记复杂命令,具体步骤如下:

(1)Windows/Mac系统(新手首选)
  1. 下载Docker Desktop:官网直接搜索“Docker Desktop”,根据自己的系统(Windows/Mac)下载,大小约50-80MB,下载耗时1-2分钟;

  2. 安装:双击安装包,一路点击“下一步”,无需修改任何配置(默认配置即可),安装完成后重启电脑;

  3. 验证:重启后打开Docker Desktop,等待30秒左右,界面显示“Running”,说明安装成功(首次启动可能会提示更新,直接跳过即可)。

(2)CentOS系统(云服务器常用)

如果用的是云服务器(比如阿里云、腾讯云),系统一般是CentOS,直接复制以下命令,依次执行,一键安装Docker,无需手动配置:

# 1. 安装必要的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 2. 设置Docker国内镜像源(加速下载,避免卡顿)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 3. 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io

# 4. 启动Docker并设置开机自启
systemctl start docker
systemctl enable docker

# 5. 验证安装成功(出现Docker版本信息即成功)
docker --version

小技巧:国内用户建议设置Docker国内镜像源(如阿里云、中科大源),可大幅提升镜像下载速度,避免因网络问题导致部署失败,上述CentOS命令已自带阿里云镜像源,Windows/Mac可在Docker Desktop设置中添加国内镜像。

2. 准备PHP项目(直接复制,无需修改)

新手不用自己写项目,直接复制以下简单的PHP项目(包含首页和接口,模拟真实开发场景),创建一个文件夹(命名为php-docker-demo),在文件夹内创建2个文件:index.php(首页)、api.php(简单接口),代码直接复制粘贴即可:

(1)index.php(首页,用于测试部署是否成功)
<?php
// index.php - 测试首页
echo "<h1>Docker部署PHP项目成功!</h1>";
echo "<p>新手也能一键上线,无需复杂配置</p>";
echo "<p>当前PHP版本:" . phpversion() . "</p>";
?>
(2)api.php(简单接口,模拟真实项目接口)
<?php
// api.php - 简单接口
header("Content-Type: application/json;charset=utf-8");

// 模拟返回数据
$response = [
    'code' => 200,
    'msg' => '接口请求成功',
    'data' => [
        'project' => 'PHP-Docker-Demo',
        'version' => '1.0',
        'desc' => 'Docker一键部署示例'
    ]
];

echo json_encode($response);
?>

项目结构说明:只有1个文件夹(php-docker-demo),里面包含2个PHP文件,结构简单,新手可直接复制,无需修改任何代码。

二、核心实操:10分钟Docker一键部署PHP项目

准备工作完成后,进入核心步骤,全程只需3步:创建Docker配置文件、执行一键部署命令、测试访问,所有命令和配置文件均可直接复制,不用懂原理,跟着做就行。

步骤1:创建Docker配置文件(2分钟)

在我们刚才创建的php-docker-demo文件夹内,再创建2个配置文件(文件名固定,不能修改),直接复制以下代码,粘贴到对应文件中,无需修改任何内容(新手可直接复制):

(1)Dockerfile(核心配置文件,定义PHP环境)
# 基于PHP 8.3官方镜像(稳定版,新手首选)
FROM php:8.3-apache

# 复制PHP项目文件到Docker容器的网站根目录
COPY . /var/www/html/

# 授权(避免权限不足,导致项目无法访问)
RUN chmod -R 755 /var/www/html/

# 暴露80端口(Apache默认端口,用于访问项目)
EXPOSE 80

说明:这个文件的作用是告诉Docker“用什么PHP环境、把项目放到哪里、暴露哪个端口”,新手不用理解每一行的含义,直接复制粘贴即可。

(2)docker-compose.yml(一键部署配置文件,核心中的核心)
# docker-compose.yml - 一键部署配置
version: '3'
services:
  php-app:
    # 构建Docker镜像(使用当前目录的Dockerfile)
    build: .
    # 容器命名(方便后续管理,可自定义)
    container_name: php-docker-demo
    # 端口映射:将本地8080端口映射到容器80端口(本地访问用8080)
    ports:
      - "8080:80"
    #  volumes:
    #    - ./:/var/www/html/  # 可选:本地文件修改后,容器内自动同步(开发时用)
    # 重启策略:容器异常退出时自动重启
    restart: always

关键说明:端口映射“8080:80”表示“本地访问http://localhost:8080,就相当于访问容器内的80端口”,如果8080端口被占用,可修改为其他端口(如8081:80),其他内容无需修改。

步骤2:执行一键部署命令(3分钟)

打开终端(Windows用CMD或PowerShell,Mac用终端,CentOS用远程连接工具如Xshell),进入php-docker-demo文件夹(关键步骤,不能错),执行以下命令,一键部署,全程自动完成:

# 进入项目文件夹(替换为你的项目路径,示例)
# Windows:cd C:php-docker-demo
# Mac/CentOS:cd /Users/xxx/php-docker-demo

# 一键构建并启动容器(核心命令,直接复制执行)
docker-compose up -d

执行命令后,Docker会自动下载PHP 8.3镜像、构建项目、启动容器,首次执行会因为下载镜像耗时稍长(1-2分钟),后续执行会秒启动。出现以下提示,说明部署成功:

Creating network "php-docker-demo_default" with the default driver
Building php-app
Step 1/4 : FROM php:8.3-apache
Pulling from library/php
......
Creating php-docker-demo ... done

步骤3:测试访问(2分钟,验证部署成功)

部署成功后,直接在浏览器中访问以下地址,即可看到PHP项目,验证部署效果:

  1. 访问首页:http://localhost:8080 (如果是云服务器,替换localhost为服务器IP,如http://123.45.67.89:8080)

  2. 访问接口:http://localhost:8080/api.php

如果能看到“Docker部署PHP项目成功”的首页,以及接口返回的JSON数据,说明部署完全成功!新手到这一步,就已经完成了PHP项目的Docker一键部署,是不是很简单?

三、常见操作(新手必看,后续维护用)

部署成功后,后续可能需要停止、重启容器,或者查看容器状态,以下3个常用命令,直接复制执行即可,不用记复杂语法:

# 1. 查看容器状态(确认容器是否在运行)
docker ps

# 2. 停止容器(停止项目运行)
docker-compose stop

# 3. 重启容器(修改项目后,重启生效)
docker-compose restart

# 4. 查看容器日志(项目报错时,用于排查问题)
docker logs php-docker-demo

小技巧:如果修改了PHP项目代码,只需执行“docker-compose restart”,重启容器,修改就会生效,无需重新部署,极大提升开发效率。

四、新手避坑指南(必看,零踩坑)

  • 避坑1:部署前一定要进入项目文件夹(php-docker-demo),再执行docker-compose命令,否则会提示“找不到配置文件”;

  • 避坑2:端口冲突问题:如果执行命令后提示“端口被占用”,修改docker-compose.yml中的端口映射(如把8080:80改为8081:80),再重新执行部署命令;

  • 避坑3:云服务器部署后,需在服务器安全组中开放对应的端口(如8080端口),否则无法通过公网访问,阿里云、腾讯云安全组设置可直接搜索“服务器安全组开放端口”,步骤简单;

  • 避坑4:Docker Desktop启动失败(Windows/Mac):大概率是电脑未开启虚拟化,进入BIOS开启虚拟化(百度搜索自己电脑型号的开启方法),重启后即可启动;

  • 避坑5:镜像下载缓慢:可设置Docker国内镜像源,Windows/Mac在Docker Desktop的“设置- Docker Engine”中添加镜像地址,CentOS可重新执行前置准备中的镜像源配置命令;

  • 避坑6:不要随意修改Dockerfile和docker-compose.yml的文件名,否则Docker无法识别,导致部署失败。

五、进阶技巧(可选,新手可后续补充)

如果需要部署更复杂的PHP项目(如带MySQL数据库的项目),可在上述基础上增加MySQL容器,实现PHP+MySQL一键部署,适合新手进阶学习,步骤如下(直接复制配置文件修改即可):

# 修改后的docker-compose.yml(PHP+MySQL一键部署)
version: '3'
services:
  php-app:
    build: .
    container_name: php-docker-demo
    ports:
      - "8080:80"
    # 关联MySQL容器,让PHP能访问MySQL
    depends_on:
      - mysql
    restart: always

  # 添加MySQL容器
  mysql:
    # 使用MySQL 8.0官方镜像
    image: mysql:8.0
    container_name: php-docker-mysql
    # 设置MySQL密码、数据库名称
    environment:
      MYSQL_ROOT_PASSWORD: 123456  # 数据库密码,可自定义
      MYSQL_DATABASE: php_demo     # 自动创建的数据库名称
    ports:
      - "3306:3306"  # 端口映射,本地可通过3306访问MySQL
    restart: always

说明:修改配置文件后,重新执行“docker-compose up -d”,即可一键部署PHP+MySQL项目,PHP项目中可直接通过“mysql”(容器名)连接数据库,无需修改数据库地址,新手可后续慢慢尝试。

六、总结(CSDN老炮真心话)

新手部署PHP项目,最头疼的就是环境配置,而Docker的核心价值就是“打包环境,一键部署”——不用再折腾Apache、PHP、MySQL的版本兼容,不用记复杂的配置命令,一个配置文件+一条命令,就能让项目在任何地方(本地、服务器)正常运行。

本文全程避开理论堆砌,所有步骤、命令、配置文件均经过实测,新手可直接复制复现,10分钟就能完成PHP项目部署,完全贴合CSDN“实操落地、新手友好”的推流逻辑。对于新手来说,不用追求懂Docker底层原理,先学会用它解决部署难题,再慢慢进阶学习,才是最高效的方式。

更多推荐