Dockerfile 搭建 Yii2 和 Nginx 环境指南

在这篇文章中,我将教你如何使用 Dockerfile 来搭建一个基于 Yii2 的 Nginx 环境。我们将一步一步进行,确保你了解每个步骤的目的和代码的意义。

流程概述

我们可以将整个流程分为以下几个步骤:

步骤 描述
步骤 1 创建 Dockerfile 文件
步骤 2 编写 Dockerfile 内容
步骤 3 构建 Docker 镜像
步骤 4 运行 Docker 容器
步骤 5 访问应用程序
步骤 6 停止并删除容器

步骤详解

步骤 1:创建 Dockerfile 文件

首先,在你的项目根目录下创建一个名为 Dockerfile 的文件:

touch Dockerfile

步骤 2:编写 Dockerfile 内容

Dockerfile 中,你需要添加以下内容:

# 使用 PHP 作为基础镜像
FROM php:7.4-fpm

# 安装 Nginx 
RUN apt-get update && apt-get install -y nginx

# 安装 Yii2 的依赖
RUN docker-php-ext-install pdo pdo_mysql

# 设置工作目录
WORKDIR /var/www/html

# 将 Yii2 应用程序代码复制到容器中
COPY . .

# 复制 Nginx 配置文件
COPY nginx/default.conf /etc/nginx/conf.d/

# 暴露端口
EXPOSE 80

# 启动 Nginx 和 PHP-FPM
CMD service nginx start && php-fpm

代码解释

  1. FROM php:7.4-fpm:指定使用 PHP 的 FPM 版本作为基础镜像。
  2. RUN apt-get update && apt-get install -y nginx:在容器中安装 Nginx。
  3. RUN docker-php-ext-install pdo pdo_mysql:安装 PDO 和 PDO_MySQL 扩展以支持数据库。
  4. WORKDIR /var/www/html:设置工作目录。
  5. COPY . .:将当前目录下的所有代码复制到容器的工作目录。
  6. COPY nginx/default.conf /etc/nginx/conf.d/:将 Nginx 的配置文件复制到容器中。
  7. EXPOSE 80:暴露容器的 80 端口以进行 HTTP 通信。
  8. CMD service nginx start && php-fpm:启动 Nginx 和 PHP-FPM 服务。

步骤 3:构建 Docker 镜像

执行以下命令以构建 Docker 镜像:

docker build -t yii2-nginx-image .

步骤 4:运行 Docker 容器

构建完成后,你可以运行 Docker 容器:

docker run -d -p 8080:80 --name yii2-nginx-container yii2-nginx-image

步骤 5:访问应用程序

打开浏览器,访问 http://localhost:8080,你应该能看到你的 Yii2 应用程序。

步骤 6:停止并删除容器

完成测试后,可以停止并删除容器:

docker stop yii2-nginx-container
docker rm yii2-nginx-container

状态图

以下是整个工作流程的状态图:

stateDiagram
    [*] --> 创建Dockerfile
    创建Dockerfile --> 编写Dockerfile
    编写Dockerfile --> 构建Docker镜像
    构建Docker镜像 --> 运行Docker容器
    运行Docker容器 --> 访问应用程序
    访问应用程序 --> 停止并删除容器
    停止并删除容器 --> [*]

序列图

整个过程的序列图如下:

sequenceDiagram
    participant 用户
    participant Docker
    participant Nginx
    participant PHP

    用户->>Docker: 构建镜像
    Docker-->>用户: 返回镜像
    用户->>Docker: 运行容器
    Docker-->>Nginx: 启动服务
    Docker-->>PHP: 启动服务
    用户->>Nginx: 访问应用程序
    Nginx-->>用户: 返回响应

结论

通过本指南,你应该可以使用 Dockerfile 创建一个基于 Yii2 和 Nginx 的开发环境。Docker 为你的开发过程提供了很大的灵活性和便利,你可以轻松地在不同的环境中部署和运行应用程序。如果你在实现过程中遇到任何问题,随时可以参考这篇文章进行解决。祝你在 Docker 的学习旅程中取得成功!