sinnebeck/laravel-served

Docker化的 artisan serve 版本

v0.8.0 2020-11-05 07:00 UTC

README

Laravel Served

Latest Version on Packagist Downloads on Packagist tests

简介

Laravel Served 是 artisan serve 的 Docker 版本。它使得通过配置文件以 Laravel 方式(即快速启动开发环境)变得简单。

开始所需的东西只有

  • Php (cli)
  • Docker
  • Laravel

注意:此包处于积极开发中,任何时间都可能发生重大变化。因此,阅读文档并在每次新版本后重新发布配置文件是个好主意。

可用服务

这些是 Served 提供的可用服务。未来还将添加更多。如果您缺少特定内容,只需创建一个新问题,请求它。

  • Php
  • Nginx
  • Apache2
  • Mysql
  • Postgres
  • Redis
  • Memcached
  • Mailhog

安装

使用 composer 安装此包

$ composer require sinnbeck/laravel-served --dev

首次运行

安装后,您可以直接启动开发服务器。这将启动 3 个 Docker 镜像

要启动容器,只需运行

$ php artisan served:up

如果您是第一次运行此命令,它将首先构建镜像,然后启动容器。如果您之前已运行过 served:up 命令,Docker 将快速检查镜像的更新,并再次启动容器。

启动和停止 Served

第一次运行后,您可以轻松地启动和停止容器,无需构建镜像或容器。只需运行

$ php artisan served:start

要再次停止容器而不删除任何内容。

$ php artisan served:stop

这很有用,如果您有多个项目使用相同的端口。

Ssh

要进入容器工作,可以运行

$ php artisan served:ssh container_name

container_name 是可选的,默认为 php(您可以在其中运行 artisan 等)。

Served 实际上并没有 ssh 进入容器,而是直接启动 bash shell。《served:ssh》听起来更好,并且快速易打。

清理

您可以删除 served 设置的所有数据。为此,只需运行

$ php artisan served:teardown

配置

虽然可以在不进行任何配置的情况下运行 served,但根据您的需求配置 served 可能是个好主意。要开始,您需要发布配置文件。

$ php artisan vendor:publish --provider="Sinnbeck\LaravelServed\ServedServiceProvider"

名称

为了避免项目之间的命名冲突,您可以为 served 配置定义自己的名称。此名称将在创建网络、镜像和容器时使用。确保它在项目之间是唯一的!如果没有设置名称,served 将使用 Laravel 安装文件夹的名称(短斜杠版本)

重要的是,名称只能包含字母、数字、.-_。其他特殊字符将引发异常。

如果在某个时候您希望更改名称,而该项目已使用 served,则重要的是使用 served:teardown 拆卸镜像和容器。如果您已更改名称并且遇到使用新名称启动容器的问题,只需将名称改回,运行 teardown,然后将其设置为新的名称即可。

Php

在此处,您可以指定如何构建 php。任何留空或删除的选项都将默认使用 served 提供的默认值。

'php' => [
        'version' => env('SERVED_PHP_VERSION', '7.4'),
        'modules' => [
            'pdo_mysql',
            'zip',
        ],
        'npm' => true, //enable or disable npm in build
        'xdebug' => [
            'enabled' => env('SERVED_XDEBUG_ENABLED', true),
            'port' => 9001,
        ],
    ],

模块数组可以填充以下 URL 中找到的任何模块(除了 parallel、pthread 和 tdlib)

https://github.com/mlocati/docker-php-extension-installer

Xdebug

建议安装xdebug以简化调试过程。要安装并配置它,只需确保在配置中将其设置为启用状态,同时运行php artisan served:up php

由于Xdebug可能会降低请求速度,因此可以根据需要快速开启和关闭它。

启用Xdebug

$ php artisan served:xdebug enable

禁用Xdebug

$ php artisan served:xdebug disable

交互式切换Xdebug

$ php artisan served:xdebug

请注意,如果您决定在配置中启用Xdebug,则需要再次运行php artisan served:up php。如果最初未安装,则无法切换其开启或关闭状态。

Web

Served目前支持nginx和apache。只需将服务设置为想要使用的软件,并设置正确的版本(或删除版本,以便served使用合理的默认版本)。Apache目前仅支持最新版本,并将忽略任何设置的版本。

'web' => [
        'service' => 'nginx', //or apache
        'version' => '1.9.2',
        'port' => env('SERVED_WEB_PORT', 8095),
        'ssl_port' => env('SERVED_WEB_SSL_PORT', 4443),
    ],

如果您尝试使用https地址,将会显示证书错误。要在Chrome中修复此问题,请打开chrome://settings/certificates并选择“受信任的根证书颁发机构”选项卡。点击导入,然后在您的/storage/app/served/web/目录中找到localhost.crt

附加功能

在此处可以定义您希望运行的额外图像。数组键用作名称,这意味着可以多次运行相同的服务,使用不同的名称(例如,两个mysql实例)。

当前支持的形象是

Mysql

端口号用于从laravel外部连接到mysql。例如,127.0.0.1:3306。

要从laravel连接到数据库,您需要使用配置键(例如,示例中的mysql)作为主机名。端口号是mysql的默认值(3306),而不是配置中指定的端口号。

如果您希望覆盖从您的docker外部连接到mysql时使用的端口号,可以在.env中添加'SERVED_EXTERNAL_DB_PORT'。

'mysql' => [
            'service' => 'mysql',
            'version' => '5.7',
            'port' => env('SERVED_EXTERNAL_DB_PORT', 3306),
            'root_password' => 'password',
            'database' => env('DB_DATABASE', 'laravel'),
            'username' => env('DB_USERNAME', 'laravel'),
            'password' => env('DB_PASSWORD', 'password'),
        ],

Postgres

要从laravel连接到postgresql,您需要使用配置键(例如,示例中的postgres)作为主机名。端口号是mysql的默认值(5432),而不是配置中指定的端口号。要从laravel外部连接,请使用配置中指定的端口号(例如,54320)和127.0.0.1。

'postgres' => [
            'service' => 'postgres',
            'version' => '12.4',
            'port' => 54320,
            'database' => 'laravel',
            'username' => 'laravel',
            'password' => 'password',
        ],

Redis

将redis添加到php模块中,然后将其添加到您的额外数组中。

'redis' => [
            'service' => 'redis',
        ]

将.env中的REDIS_HOST更改为您使用的键(例如,redis)。

Memcached

将memcached添加到php模块中,然后将其添加到您的额外数组中。

'memcached' => [
            'service' => 'memcached',
        ]

将.env中的CACHE_DRIVER更改为memcached,并添加MEMCACHED_HOST,将其设置为您使用的键(例如,memcached)。

Mailhog

将mailhog添加到您的额外数组中。

'mail' => [
            'service' => 'mailhog',
            'port' => 8025
        ]

将.env中的MAIL_HOST更改为您使用的键(例如,mail),并将MAIL_PORT更改为1025。要在浏览器中查看邮箱,请打开http://localhost:8025(将8025替换为配置中设置的端口号)。

测试

使用以下命令运行测试:

$ composer test

待办事项

  • 测试!
  • 添加更多图像
  • 允许用户创建服务
  • 如果未设置,让served生成合适的名称(而不是默认为'served')
  • 处理设置/添加卷
  • 处理移除卷
  • 处理图像的升级/降级
  • 将cli输出接口传递给其他类,以便从它们中输出到cli
  • 在其他平台(如Ubuntu)上进行测试