Laravel 是一个流行的 PHP Web 开发框架,它提供了许多便利的功能和工具,使得开发者可以更快速、更高效地开发 Web 应用程序。但是,配置 Laravel 开发环境可能会比较繁琐,因为需要安装和配置 PHP、MySQL、Apache/Nginx 等多个组件。在这种情况下,使用 Docker Compose 可以方便地构建 Laravel 开发环境,本文将介绍如何使用 Docker Compose 构建 Laravel 开发环境。
Docker Compose 简介
Docker Compose 是 Docker 官方提供的一个工具,用于管理多个 Docker 容器的应用程序。它允许您使用 YAML 文件定义应用程序的服务、网络和卷,并使用单个命令启动、停止和重建所有服务。使用 Docker Compose,您可以轻松地创建和管理多个 Docker 容器,从而构建复杂的应用程序。
在使用 Docker Compose 构建 Laravel 开发环境之前,需要先安装 Docker 和 Docker Compose。这里不再赘述,可参考 Docker 和 Docker Compose 官方文档进行安装。
创建 Docker Compose 文件
在开始之前,需要先创建一个 Docker Compose 文件。这个文件包含了 Laravel 开发环境所需的所有服务,如 PHP、MySQL、Nginx 等。在项目根目录下创建一个名为 docker-compose.yml
的文件,内容如下:
// javascriptcn.com 代码示例 version: '3' services: app: build: context: . dockerfile: ./docker/app/Dockerfile container_name: laravel-app restart: unless-stopped tty: true environment: SERVICE_NAME: app SERVICE_TAGS: dev volumes: - .:/var/www/html - ./docker/app/php.ini:/usr/local/etc/php/php.ini networks: - laravel webserver: image: nginx:alpine container_name: laravel-webserver restart: unless-stopped tty: true ports: - "80:80" volumes: - .:/var/www/html - ./docker/webserver/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - app networks: - laravel db: image: mysql:5.7 container_name: laravel-db restart: unless-stopped tty: true environment: MYSQL_DATABASE: laravel MYSQL_ROOT_PASSWORD: root SERVICE_TAGS: dev SERVICE_NAME: mysql ports: - "3306:3306" volumes: - ./docker/db:/var/lib/mysql networks: - laravel networks: laravel: driver: bridge
这个文件定义了三个服务:app
、webserver
和 db
。其中:
app
:这个服务用于运行 Laravel 应用程序,它基于 PHP 镜像构建,使用了一个自定义的 Dockerfile,其中包含了 Laravel 所需的 PHP 扩展和 Composer。这个服务将 Laravel 代码挂载到容器内的/var/www/html
目录,并将php.ini
文件挂载到容器内的/usr/local/etc/php/php.ini
目录。此外,还定义了一个名为laravel
的网络,用于连接所有服务。webserver
:这个服务用于运行 Nginx,它基于 Nginx 镜像构建,并将 Laravel 应用程序的 Nginx 配置文件挂载到容器内的/etc/nginx/conf.d/default.conf
目录。此外,还将80
端口映射到主机的80
端口,以便可以通过浏览器访问 Laravel 应用程序。db
:这个服务用于运行 MySQL 数据库,它基于 MySQL 镜像构建,将3306
端口映射到主机的3306
端口,并将 MySQL 数据库文件挂载到容器内的/var/lib/mysql
目录。
创建 Dockerfile 文件
在上面的 Docker Compose 文件中,app
服务使用了一个自定义的 Dockerfile,用于构建包含 Laravel 所需的 PHP 扩展和 Composer 的 PHP 镜像。在项目根目录下创建一个名为 docker/app/Dockerfile
的文件,内容如下:
// javascriptcn.com 代码示例 FROM php:7.4-fpm RUN apt-get update \ && apt-get install -y \ libzip-dev \ zip \ unzip \ git \ curl \ libpng-dev \ libonig-dev \ libxml2-dev \ && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer WORKDIR /var/www/html
这个文件基于 php:7.4-fpm
镜像构建,安装了 Laravel 所需的 PHP 扩展和 Composer。其中:
libzip-dev
、zip
和unzip
:用于处理 ZIP 文件。git
:用于从 Git 仓库中获取代码。curl
:用于从网络上下载文件。libpng-dev
、libonig-dev
和libxml2-dev
:用于支持 PHP 扩展。
启动 Docker Compose
在完成上述步骤后,可以使用以下命令启动 Docker Compose:
docker-compose up -d
这个命令将会启动 Docker Compose,并在后台运行。在启动后,可以使用以下命令查看 Docker Compose 的状态:
docker-compose ps
这个命令将会输出 Docker Compose 中所有服务的状态。
运行 Laravel 应用程序
在启动 Docker Compose 后,可以使用以下命令进入 app
服务的容器:
docker-compose exec app bash
这个命令将会进入 app
服务的容器,并打开一个 Bash 终端。在这个终端中,可以使用以下命令运行 Laravel 应用程序:
php artisan serve --host=0.0.0.0 --port=8000
这个命令将会在 app
服务的容器中启动 Laravel 应用程序,并将其绑定到 8000
端口。此时,可以通过浏览器访问 http://localhost:8000
来查看 Laravel 应用程序。
总结
使用 Docker Compose 构建 Laravel 开发环境可以方便地管理多个 Docker 容器,从而构建复杂的应用程序。在本文中,我们介绍了如何使用 Docker Compose 构建 Laravel 开发环境,并提供了示例代码。希望这篇文章能够帮助您更快速地构建 Laravel 开发环境。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656eed29d2f5e1655d73d212