为什么使用 Docker?

Docker 为开发者提供了一种独立且可移植的方式来运行应用程序,彻底解决“它无法在我的计算机上运行”这一开发环境设置的常见难题。

Docker 的优势在于:

  • 可移植性:Docker 容器能够在任何平台上运行,确保应用程序始终保持一致的行为。

  • 易于安装:所有依赖项和配置都包含在容器内,只需一个简单的 Docker 命令即可轻松地将项目分享给其他开发人员。

  • 隔离性:每个项目都拥有独立的运行环境,避免项目之间的冲突,提高开发效率。

对于想要开发应用程序的任何人来说,Docker 都是一个强大的工具,能够提升开发效率,降低部署难度,并促进团队协作。

步骤 1:安装 Docker 和 Docker Compose

安装步骤:

1、访问 Docker 官方网站

2、下载适合您操作系统的 Docker 版本: 网站上提供了 Windows、macOS 和 Linux 的安装包。

3、按照安装向导完成安装: 安装过程通常比较简单,只需按照提示进行操作即可。

安装完成后,打开终端或命令行窗口,输入以下命令检查 Docker 是否安装成功:

docker --version

步骤 2:创建 PHP 环境的 Dockerfile

为了创建一个独立的 PHP 开发环境,我们需要创建一个 Dockerfile。

在您的项目目录中创建一个名为 Dockerfile 的文件。不要给文件添加任何扩展名,直接命名为 Dockerfile。

现在,您已经创建了 Dockerfile 文件,接下来我们将在这个文件中定义我们的 PHP 开发环境。

FROM php:8.0-apache

# 指定工作目录
WORKDIR /var/www/html

# 安装必要的PHP扩展
RUN docker-php-ext-install mysqli pdo pdo_mysql

# 打开端口
EXPOSE 80

步骤 3:使用 Docker Compose 定义服务

为了同时使用 PHP 和 MySQL,我们需要使用 Docker Compose 来定义和管理这两个服务。

在项目目录中创建一个名为 docker-compose.yml 的文件。

接下来,我们将在 docker-compose.yml 文件中定义 PHP 和 MySQL 服务,并配置它们之间的连接。

version: '3.8'

services:
  php:
    build:
      context: .
    container_name: php_container
    volumes:
      - ./src:/var/www/html
    ports:
      - "8080:80"
    networks:
      - app-network
  
  mysql:
    image: mysql:5.7
    container_name: mysql_container
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - dbdata:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  dbdata:

PHP 服务:

  • 使用一个 Docker 镜像构建 PHP 容器。

  • 将项目目录中的源代码(PHP 文件)挂载到容器内的 /var/www/html 目录,方便进行开发和调试。

MySQL 服务:

  • 使用一个 Docker 镜像构建 MySQL 容器。

  • 创建一个外部卷,用于存储数据库文件。这样即使删除容器,数据也不会丢失。

步骤 4:启动项目

完成所有配置后,我们可以启动项目了!

1、在终端中执行以下命令:

docker-compose up -d

这条命令会:

  • 在后台启动 docker-compose.yml 文件中定义的 PHP 和 MySQL 服务。

  • 创建必要的容器并启动它们。

2、访问您的应用程序:

  • 打开浏览器,访问 localhost:8080 即可查看正在运行的 PHP 应用程序。

现在,您已经成功地使用 Docker 和 Docker Compose 创建了一个完整的 PHP 开发环境,并启动了您的应用程序!