PHPackages                             roiwk/webman-sail - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. roiwk/webman-sail

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

roiwk/webman-sail
=================

Webman plugin roiwk/webman-sail

v1.4.5(2y ago)212281MITPHP

Since Mar 1Pushed 2y ago1 watchersCompare

[ Source](https://github.com/roiwk/webman-sail)[ Packagist](https://packagist.org/packages/roiwk/webman-sail)[ RSS](/packages/roiwk-webman-sail/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (4)Versions (6)Used By (0)

简介
==

[](#简介)

Webman Sail 是一个轻量级的命令行界面，用于 Webman 与 Docker 开发环境进行交互。Sail 为使用 PHP，MySQL 和 Redis 构建 Webman 应用程序提供了一个很好的起点，而无需事先具有 Docker 经验。

Sail 的核心是 docker-compose.yml 文件和存储在项目根目录的 sail 脚本。sail 脚本为 CLI 提供了便捷的方法，可用于与 docker-compose.yml 文件定义的 Docker 容器进行交互。

Webman Sail 支持 macOS、Linux 和 Windows (通过 [WSL2](https://docs.microsoft.com/en-us/windows/wsl/about)）。

置顶
--

[](#置顶)

1. 解决"先有鸡,还是先有蛋"问题. 无需系统有php环境,直接建立webman项目(通过docker):

```
curl -s "https://www.roiwk.cn/build-webman-app" | bash
```

这将在当前目录下建立一个'example-app'的文件夹, 默认环境为php8.1, mysql,reids的webman项目

安装 &amp; 启动
-----------

[](#安装--启动)

1. 安装依赖

```
composer require roiwk/webman-sail --dev
```

2. webman命令执行 `sail:install`。这个命令用于发布 `docker-compose.yml`文件到你应用程序的根目录：

```
php webman sail:install
```

或者直接指定需要安装的服务：

```
php webman sail:install --with=mysql,redis
```

3. 启动服务。

```
./vendor/bin/sail up
```

访问： `http://localhost` 即可。 至此，基本的环境安装已经就绪，下来是配置和使用相关的文档：

环境变量
----

[](#环境变量)

1. php版本默认使用8.1版本。 默认版本支持 7.4-8.2,更多可查看[定制容器](#%E5%AE%9A%E5%88%B6%E5%AE%B9%E5%99%A8); 具体版本按需设置`.env`文件中的配置即可。

```
PHP_CLI_VERSION=8.1
```

2. 数据库配置

```
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=dev
DB_PASSWORD=123456
DB_ROOT_PASSWORD=password
```

执行命令
----

[](#执行命令)

1. help，查看支持的指令帮助。

```
./vendor/bin/sail --help
```

2. sail === docker-compose 相当于docker-compose指令。

```
./vendor/bin/sail up -d
./vendor/bin/sail down
./vendor/bin/sail ps
```

3. sail === php-cli(container) 链接容器内部php指令。

```
./vendor/bin/sail php test.php
./vendor/bin/sail php -v
```

4. sail === composer(container) 链接容器内部composer指令。

```
./vendor/bin/sail composer update
./vendor/bin/sail composer require foo/bar
./vendor/bin/sail composer remove foo/bar
```

5. sail === mysql-cli 链接mysql/mariadb/psql容器内部指令。

```
./vendor/bin/sail mysql
```

6. sail === redis-cli 链接redis容器内部指令。

```
./vendor/bin/sail redis
```

7. sail === shell(container) 链接应用容器内部shell指令。

```
./vendor/bin/sail shell
./vendor/bin/sail root-shell               #root用户
```

8. sail === phpunit(container) 执行应用容器内部phpunit指令。

```
./vendor/bin/sail phpunit --bootstrap support/bootstrap.php
```

...等等功能，
` --help`期待你的发现与探索。

定制容器
----

[](#定制容器)

因为 Sail 就是 Docker，所以你可以自由的定制任何内容，使用 `sail:publish` 命令可以将 Sail 预设的 Dockerfile 发布到你的应用程序中，以便于进行定制：

```
./vendor/bin/sail webman sail:publish
```

运行这个命令后，Sail 预设好的 Dockerfile 和其他配置文件将被生成发布到项目根目录的 docker 目录中。 完成上述操作后，可以按需修改Dockerfile中的php扩展等。修改完成后，执行以下命令重新构建容器即可：

```
./vendor/bin/sail build --no-cache
```

高级用法
----

[](#高级用法)

1. 使用开发容器 [DevContainer](https://code.visualstudio.com/docs/remote/containers)

```
./vendor/bin/sail install --devcontainer
```

2. 配置别名 默认情况下，Sail 命令使用 vendor/bin/sail 脚本调用,但与其重复的输入 vendor/bin/sail 来执行 Sail 命令，你可能会希望配置一个 Bash 别名方便你更容易的执行 Sail 命令

```
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
```

> 补充：通过 vim ~/.bashrc 或 vim ~/.zshrc 加入别名，可以让别名常驻。

贡献
--

[](#贡献)

欢迎提交PR

鸣谢
--

[](#鸣谢)

灵感与借鉴：[laravel/sail](https://github.com/laravel/sail)

开源许可协议
------

[](#开源许可协议)

[MIT LICENSE](./LICENSE)

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~23 days

Total

5

Last Release

1075d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1beffb7f6ed8456ac0dff0c7f864036e80f1404332ff118d1ebd0e0026d284e0?d=identicon)[roiwk](/maintainers/roiwk)

---

Top Contributors

[![roiwk](https://avatars.githubusercontent.com/u/21002823?v=4)](https://github.com/roiwk "roiwk (18 commits)")

---

Tags

plugindockersaildocker-composewebmanwebman-sail

### Embed Badge

![Health badge](/badges/roiwk-webman-sail/health.svg)

```
[![Health](https://phpackages.com/badges/roiwk-webman-sail/health.svg)](https://phpackages.com/packages/roiwk-webman-sail)
```

###  Alternatives

[aschmelyun/fleet

Run multiple Laravel Sail websites on your local environment

33269.5k](/packages/aschmelyun-fleet)[ryoluo/sail-ssl

Laravel Sail plugin to enable SSL (HTTPS) connection with Nginx.

188672.6k2](/packages/ryoluo-sail-ssl)[norsys/rothenberg

Tool which allow a developper to create or maintain a Symfony application or a Symfony bundle very easily and without install something on his workstation

2410.6k3](/packages/norsys-rothenberg)[yoelpc4/laravel-sail-preset

Laravel Sail runtimes &amp; docker-compose.yml preset.

1429.2k](/packages/yoelpc4-laravel-sail-preset)[downtoworld/laravel-devops

Laravel Cloudflare-Tunnels Ready Production Docker-Compose

161.1k](/packages/downtoworld-laravel-devops)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
