hackley2 / laravel-docker-package
一个使启动本地 Docker 开发环境变得简单的 Laravel 扩展包
README
此 Laravel 扩展包可以帮助您快速搭建 Docker 开发环境。无需在主机计算机上直接安装 LAMP 套件。
创建新的 Laravel 项目
安装 Laravel 需要已安装 PHP 和 Composer。如果您遵循 Docker 最佳实践,那么您将想执行以下操作,而不是在主机计算机上直接运行 https://laravel.net.cn/docs/installation(因为您可能没有在主机计算机上安装 PHP)。
注意:以下命令假设您已经安装了 docker CE https://docs.dockerd.com.cn/engine/installation,并且您的计算机正在运行 Linux 或 macOS。如果您正在运行 Windows,您将需要修改以下命令或使用 Microsoft 的 Bash on Windows https://msdn.microsoft.com/en-us/commandline/wsl/install_guide。
- 导航到您想要安装新的 Laravel 项目的位置
- 您需要 PHP 和 Composer 来安装 Laravel,因此启动官方的 Composer Docker 容器以访问具有 PHP 和 composer 的 bash 提示符。 (除非另有说明,否则所有命令(步骤 #3 至步骤 #8)应在此命令的步骤 #2 中启动的 Docker 容器终端中运行)
# Run from host machine to access a php terminal docker run -ti --rm -u $(id -u):$(id -g) -v $PWD:/var/www/html hackley2/php-apache bash
- 将 Laravel 安装到名为 "blog" 的新文件夹中
composer create-project --prefer-dist laravel/laravel blog
- 切换到新的 blog 文件夹
cd blog
使用现有 Laravel 项目设置 Docker
现在您已经设置了 Laravel 项目,并且您的终端仍然运行着我们在步骤 2 中打开的 composer bash 提示符,我们可以设置开发环境所需的 Docker 文件
- 将此存储库作为 composer 扩展包安装
composer require hackley2/laravel-docker-package
- 通过在您的 config/app.php 文件中的 'providers' 数组中添加以下行来将 DockerServiceProvider 注册到 Laravel 中
// PHP code to enter in config/app.php Hackley2\LaravelDockerPackage\DockerServiceProvider::class,
- 将 docker 文件夹和 docker-compose.yml 文件发布到您的项目中
php artisan vendor:publish --tag=docker
- 退出我们在步骤 #2 中启动的执行命令的 composer 容器
exit
使用 Docker
现在所有的 Docker 文件都已经就位,按照以下步骤启动和管理您的 Docker LAMP 堆栈
- 在 .env 文件中设置数据库设置
- 在 .env 文件中将 DB_HOST 设置为 "mysql"
- 启动 Docker LAMP 堆栈
# Start your docker server containers docker-compose up -d
# Stop your docker server containers docker-compose stop
- 查看注释
- 以下所有命令都应在 Laravel 项目的根目录下运行
- 您在第一次构建 docker-compose 环境之前在 .env 文件中设置的数据库设置将导致 MySQL 数据库的名称、用户和密码设置为 .env 文件中指示的内容。
- 如果您删除 MySQL 容器,您的数据库数据将会丢失。有许多解决方法。有关更多信息,请参阅 https://hub.docker.com/_/mariadb/。
- 如果您需要连接到本地开发服务器的终端进行数据库迁移等操作,请通过运行
docker ps
获取正在运行的 Docker 容器的列表,以确定您的 "phpserver" 容器的名称,然后使用./docker-exec.sh
脚本文件(下面将提供更多详细信息)。 - 一旦 docker 服务器容器启动,您可以通过将浏览器指向 127.0.0.1 来访问您的 Laravel 应用程序。
在您的Docker容器中运行命令
如果您需要在您的Docker容器中运行命令(例如访问您的Docker容器终端),请使用以下命令
# Run command on one docker container (from MacOS host machine) docker exec -ti <docker-container-name> <command>
# Run command on one docker container (from Linux host machine) docker exec -ti -u $(id -u):$(id -g) <docker-container-name> <command>
如果您觉得这个命令过于繁琐,可以使用docker-exec.sh
脚本,方法如下
./docker-exec.sh <container-name> <command>
连接到MySQL
要连接到您的MySQL服务器,请在您的终端中使用此命令,或者将此命令的凭证输入到您喜欢的数据库管理程序中。使用在您的.env文件中设置的数据库密码。
# Replace <DB_USERNAME> with the value defined in your .env file # Use the password defined in your .env file mysql -u <DB_USERNAME> -p -h 127.0.0.1 -P 33061
自定义您的Docker服务器环境
如果您需要运行redis、memcached、node.js或其他服务器环境,请将新的服务添加到项目根目录下的docker-compose.yml文件中。如果您对Docker的了解不足,那么我强烈推荐Chris Tankersley的《Docker For Developers》一书。这本书价格不贵,并提供了对Docker的精彩介绍。您可以通过电子书和平装书在https://www.phparch.com/books/docker-for-developers/ 购买。
如果您需要hackely2/php-apache中不可用的PHP扩展,可以创建自己的Dockerfile,其中包含您需要的扩展。您甚至可以在hackley2/php-apache的基础上构建并扩展它,而不是从头开始。