Skip to content

Instantly share code, notes, and snippets.

@kiddtang
Last active June 14, 2023 06:29
Show Gist options
  • Save kiddtang/5dc75293806369d443f9f9a6be861d0d to your computer and use it in GitHub Desktop.
Save kiddtang/5dc75293806369d443f9f9a6be861d0d to your computer and use it in GitHub Desktop.
Youtube - Boosts your Laravel Sail
OCTANE_SERVER=swoole
OCTANE_HTTPS=true
SWOOLE_SOCK_TCP | ((bool) $config['swoole']['ssl'] ?? 0) * SWOOLE_SSL,
ports:
- '${APP_PORT:-80}:80'
- 8000:8000
XDEBUG: '${APP_DEBUG:-false}'
XDEBUG_PORT: '${SAIL_XDEBUG_PORT:-9000}'
RUN mkdir -p /etc/swoole/ssl/certs/ /etc/swoole/ssl/private/
RUN openssl req -x509 -nodes -days 365 -subj "/C=CA/ST=QC/O=Artisan, Inc./CN=localhost" \
-addext "subjectAltName=DNS:localhost" -newkey rsa:2048 \
-keyout /etc/swoole/ssl/private/sail-selfsigned.key \
-out /etc/swoole/ssl/certs/sail-selfsigned.crt;
RUN chmod 644 /etc/swoole/ssl/certs/*.crt
RUN chown -R root:sail /etc/swoole/ssl/private/
RUN chmod 640 /etc/swoole/ssl/private/*.key
ARG XDEBUG
ARG XDEBUG_PORT
RUN if [ "${XDEBUG}" = 'true' ] ; then \
apt-get update \
&& apt-get install -y php-xdebug \
&& echo "[XDebug]" > /etc/php/8.0/cli/php.ini \
&& echo "zend_extension="$(find /usr/lib/php/20200930/ -name xdebug.so)" > /etc/php/8.0/cli/php.ini" \
&& echo "xdebug.mode = debug" >> /etc/php/8.0/cli/php.ini \
&& echo "xdebug.discover_client_host = true" >> /etc/php/8.0/cli/php.ini \
&& echo "xdebug.client_host = host.docker.internal" >> /etc/php/8.0/cli/php.ini \
&& echo "xdebug.client_port = ${XDEBUG_PORT}" >> /etc/php/8.0/cli/php.ini \
&& apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ;\
fi;
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Sail Xdebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/var/www/html": "${workspaceFolder}"
},
"hostname": "localhost",
"ignore": ["**/vendor/**/*.php"],
"xdebugSettings": {
"max_data": 65536,
"show_hidden": 1,
"max_children": 100,
"max_depth": 3
}
},
]
}
/*
|--------------------------------------------------------------------------
| Octane Swoole Configuration Options
|--------------------------------------------------------------------------
|
| While using Swoole, you may define additional configuration options as
| required by the application. You maycheck which options you need from:
| https://www.swoole.co.uk/docs/modules/swoole-server/configuration
|
*/
'swoole' => [
'ssl' => true,
'options' => [
'ssl_cert_file' => '/etc/swoole/ssl/certs/sail-selfsigned.crt',
'ssl_key_file' => '/etc/swoole/ssl/private/sail-selfsigned.key',
]
],
path=$(printf '%s\n' "${PWD##*/}")
command="docker exec ${path}_laravel.test_1 php "$@""
echo "Running php on docker ${path}_laravel.test_1"
$command
{
"php.validate.executablePath": "/usr/local/bin/php"
}
[supervisord]
nodaemon=true
user=root
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
[program:php-octane]
command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=swoole --host=0.0.0.0 --port=8000 --watch
user=sail
environment=LARAVEL_SAIL="1"
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:php-serve]
command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80
user=sail
environment=LARAVEL_SAIL="1"
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
mix.browserSync({
proxy: 'https://localhost:8000',
open: false,
});
@Eboubaker
Copy link

can you add the chokidar dependency, (the install command or changes in package.json)

Are you facing this issue?

I faced an issue after doing npm run watch-poll npm will try to install additional dependencies.

   Additional dependencies must be installed. This will only take a moment.

  running npm install browser-sync [email protected] --save-dev --legacy-peer-deps

I fixed this now by manually installing this dependency and removed the version part from the install command @2.3.0 , it was clashing with other project deps.

@kiddtang
Copy link
Author

can you add the chokidar dependency, (the install command or changes in package.json)

Are you facing this issue?

I faced an issue after doing npm run watch-poll npm will try to install additional dependencies.

   Additional dependencies must be installed. This will only take a moment.

  running npm install browser-sync [email protected] --save-dev --legacy-peer-deps

I fixed this now by manually installing this dependency and removed the version part from the install command @2.3.0 , it was clashing with other project deps.

Understand. Mine was base on fresh Laravel. However, the dependency issues have to resolve case-by-case.

Thanks for leaving your feedback!

@binaryfire
Copy link

binaryfire commented Sep 26, 2021

Hey @kiddtang, thanks for the great resource.

Is it still necessary to run apt-get update && apt-get install -y php-xdebug? Because php8.0-xdebug is already installed in the default 8.0 Sail Dockerfile.

2021-09-26

@kiddtang
Copy link
Author

kiddtang commented Sep 26, 2021

Hey @kiddtang, thanks for the great resource.

Is it still necessary to run apt-get update && apt-get install -y php-xdebug? Because php8.0-xdebug is already installed in the default 8.0 Sail Dockerfile.

2021-09-26

You are right! Since Larave Sail v 1.9.0, the Xdebug was included as default.
You can refer to official docs https://laravel.com/docs/8.x/sail#debugging-with-xdebug
Alternatively my Updated Medium: https://blog.devgenius.io/xdebug-laravel-sail-project-in-vs-code-b7b73e3dedf7#fac6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment