[{"data":1,"prerenderedAt":524},["ShallowReactive",2],{"navigation":3,"/docs/framework-guides/laravel/nightwatch":221,"/docs/framework-guides/laravel/nightwatch-surround":519},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","/docs","docs",[9,12,56,85,132,153,178,195,208],{"title":10,"path":6,"stem":11},"","docs/index",{"title":13,"path":14,"stem":15,"children":16,"icon":55},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[17,19,23,27,31,35,39,43,47,51],{"title":18,"path":14,"stem":15},"Introduction",{"title":20,"path":21,"stem":22},"Container Basics","/docs/getting-started/container-basics","docs/1.getting-started/2.container-basics",{"title":24,"path":25,"stem":26},"Installation","/docs/getting-started/installation","docs/1.getting-started/3.installation",{"title":28,"path":29,"stem":30},"These Images vs Others","/docs/getting-started/these-images-vs-others","docs/1.getting-started/4.these-images-vs-others",{"title":32,"path":33,"stem":34},"Choosing an Image","/docs/getting-started/choosing-an-image","docs/1.getting-started/5.choosing-an-image",{"title":36,"path":37,"stem":38},"Default Configurations","/docs/getting-started/default-configurations","docs/1.getting-started/6.default-configurations",{"title":40,"path":41,"stem":42},"Upgrade Guide","/docs/getting-started/upgrade-guide","docs/1.getting-started/7.upgrade-guide",{"title":44,"path":45,"stem":46},"Changelog","/docs/getting-started/changelog","docs/1.getting-started/8.changelog",{"title":48,"path":49,"stem":50},"About","/docs/getting-started/about","docs/1.getting-started/9.about",{"title":52,"path":53,"stem":54},"Contributing","/docs/getting-started/contributing","docs/1.getting-started/99.contributing",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Image Variations","/docs/image-variations","docs/2.image-variations",[61,65,69,73,77,81],{"title":62,"path":63,"stem":64},"CLI","/docs/image-variations/cli","docs/2.image-variations/cli",{"title":66,"path":67,"stem":68},"FPM","/docs/image-variations/fpm","docs/2.image-variations/fpm",{"title":70,"path":71,"stem":72},"FPM-Apache","/docs/image-variations/fpm-apache","docs/2.image-variations/fpm-apache",{"title":74,"path":75,"stem":76},"FPM-NGINX","/docs/image-variations/fpm-nginx","docs/2.image-variations/fpm-nginx",{"title":78,"path":79,"stem":80},"FrankenPHP","/docs/image-variations/frankenphp","docs/2.image-variations/frankenphp",{"title":82,"path":83,"stem":84},"Unit (Deprecated)","/docs/image-variations/unit","docs/2.image-variations/unit",{"title":86,"path":87,"stem":88,"children":89,"page":55},"Framework Guides","/docs/framework-guides","docs/3.framework-guides",[90,123],{"title":91,"icon":55,"defaultOpen":55,"path":92,"stem":93,"children":94,"page":55},"Laravel","/docs/framework-guides/laravel","docs/3.framework-guides/1.laravel",[95,99,103,107,111,115,119],{"title":96,"path":97,"stem":98},"Automations","/docs/framework-guides/laravel/automations","docs/3.framework-guides/1.laravel/1.automations",{"title":100,"path":101,"stem":102},"Task Scheduler","/docs/framework-guides/laravel/task-scheduler","docs/3.framework-guides/1.laravel/2.task-scheduler",{"title":104,"path":105,"stem":106},"Queue","/docs/framework-guides/laravel/queue","docs/3.framework-guides/1.laravel/3.queue",{"title":108,"path":109,"stem":110},"Horizon","/docs/framework-guides/laravel/horizon","docs/3.framework-guides/1.laravel/4.horizon",{"title":112,"path":113,"stem":114},"Reverb","/docs/framework-guides/laravel/reverb","docs/3.framework-guides/1.laravel/4.reverb",{"title":116,"path":117,"stem":118},"Nightwatch","/docs/framework-guides/laravel/nightwatch","docs/3.framework-guides/1.laravel/5.nightwatch",{"title":120,"path":121,"stem":122},"Octane","/docs/framework-guides/laravel/octane","docs/3.framework-guides/1.laravel/octane",{"title":124,"icon":55,"defaultOpen":55,"path":125,"stem":126,"children":127,"page":55},"WordPress","/docs/framework-guides/wordpress","docs/3.framework-guides/2.wordpress",[128],{"title":129,"path":130,"stem":131},"Using Docker with WordPress","/docs/framework-guides/wordpress/using-wordpress-with-docker","docs/3.framework-guides/2.wordpress/4.using-wordpress-with-docker",{"title":133,"path":134,"stem":135,"children":136,"page":55},"Deployment And Production","/docs/deployment-and-production","docs/4.deployment-and-production",[137,141,145,149],{"title":138,"path":139,"stem":140},"Development to Production","/docs/deployment-and-production/development-to-production","docs/4.deployment-and-production/2.development-to-production",{"title":142,"path":143,"stem":144},"Packaging Your App for Deployment","/docs/deployment-and-production/packaging-your-app-for-deployment","docs/4.deployment-and-production/3.packaging-your-app-for-deployment",{"title":146,"path":147,"stem":148},"Configuring SSL","/docs/deployment-and-production/configuring-ssl","docs/4.deployment-and-production/4.configuring-ssl",{"title":150,"path":151,"stem":152},"Choosing a Host","/docs/deployment-and-production/choosing-a-host","docs/4.deployment-and-production/5.choosing-a-host",{"title":154,"icon":55,"defaultOpen":55,"path":155,"stem":156,"children":157,"page":55},"Advanced Guides","/docs/guide","docs/5.guide",[158,162,166,170,174],{"title":159,"path":160,"stem":161},"Migrating from official PHP images","/docs/guide/migrating-from-official-php-images","docs/5.guide/1.migrating-from-official-php-images",{"title":163,"path":164,"stem":165},"Using Healthchecks With Laravel","/docs/guide/using-healthchecks-with-laravel","docs/5.guide/2.using-healthchecks-with-laravel",{"title":167,"path":168,"stem":169},"Using S6 Overlay","/docs/guide/using-s6-overlay","docs/5.guide/2.using-s6-overlay",{"title":171,"path":172,"stem":173},"Understanding File Permissions","/docs/guide/understanding-file-permissions","docs/5.guide/3.understanding-file-permissions",{"title":175,"path":176,"stem":177},"Configuring Trusted Proxies","/docs/guide/configuring-trusted-proxies","docs/5.guide/4.configuring-trusted-proxies",{"title":179,"icon":55,"defaultOpen":55,"path":180,"stem":181,"children":182,"page":55},"Customization","/docs/customizing-the-image","docs/6.customizing-the-image",[183,187,191],{"title":184,"path":185,"stem":186},"Changing php.ini settings","/docs/customizing-the-image/changing-common-php-settings","docs/6.customizing-the-image/1.changing-common-php-settings",{"title":188,"path":189,"stem":190},"Installing PHP extensions","/docs/customizing-the-image/installing-additional-php-extensions","docs/6.customizing-the-image/2.installing-additional-php-extensions",{"title":192,"path":193,"stem":194},"Adding Start Up Scripts","/docs/customizing-the-image/adding-your-own-start-up-scripts","docs/6.customizing-the-image/3.adding-your-own-start-up-scripts",{"title":196,"path":197,"stem":198,"children":199,"page":55},"Troubleshooting","/docs/troubleshooting","docs/7.troubleshooting",[200,204],{"title":201,"path":202,"stem":203},"Common Issues","/docs/troubleshooting/common-issues","docs/7.troubleshooting/1.common-issues",{"title":205,"path":206,"stem":207},"Getting Help","/docs/troubleshooting/getting-help","docs/7.troubleshooting/2.getting-help",{"title":209,"path":210,"stem":211,"children":212,"page":55},"Reference","/docs/reference","docs/8.reference",[213,217],{"title":214,"path":215,"stem":216},"Environment Variable Specification","/docs/reference/environment-variable-specification","docs/8.reference/1.environment-variable-specification",{"title":218,"path":219,"stem":220},"Command Reference","/docs/reference/command-reference","docs/8.reference/2.command-reference",{"id":222,"title":116,"body":223,"description":511,"extension":512,"links":513,"meta":514,"navigation":336,"path":117,"redirect":513,"seo":517,"stem":118,"__hash__":518},"docs/docs/3.framework-guides/1.laravel/5.nightwatch.md",{"type":224,"value":225,"toc":504},"minimark",[226,231,235,249,253,256,262,288,429,433,444,448,462,488,492,500],[227,228,230],"h2",{"id":229},"laravel-nightwatch-with-docker","Laravel Nightwatch with Docker",[232,233,234],"p",{},"Run Laravel Nightwatch by passing the Artisan command as the container's command. Nightwatch is Laravel's observability platform for monitoring application performance, errors, and queries in real-time.",[236,237,238],"note",{},[232,239,240,241,248],{},"Before using Nightwatch with Docker, follow the ",[242,243,247],"a",{"href":244,"rel":245},"https://nightwatch.laravel.com/docs/start-guide",[246],"nofollow","Laravel Nightwatch setup instructions"," to install and configure the Nightwatch package in your Laravel application.",[227,250,252],{"id":251},"docker-compose-example","Docker Compose example",[232,254,255],{},"This example runs Nightwatch as a separate container using the same image as your web service.",[232,257,258],{},[259,260,261],"strong",{},"Key points:",[263,264,265,269,285],"ul",{},[266,267,268],"li",{},"Use the same image for both your web and Nightwatch services",[266,270,271,272,276,277,280,281,284],{},"Set ",[273,274,275],"code",{},"SIGTERM"," as the stop signal for graceful shutdown (especially for ",[273,278,279],{},"fpm-apache"," and ",[273,282,283],{},"fpm-nginx",")",[266,286,287],{},"Include a health check to monitor Nightwatch status",[289,290,295],"pre",{"className":291,"code":292,"filename":293,"language":294,"meta":10,"style":10},"language-yml shiki shiki-themes github-dark","services:\n  php:\n    image: my/laravel-app\n\n  nightwatch:\n    image: my/laravel-app\n    command: [\"php\", \"/var/www/html/artisan\", \"nightwatch:agent\"]\n    stop_signal: SIGTERM\n    healthcheck:\n      test: [\"CMD\", \"healthcheck-nightwatch\"]\n      start_period: 10s\n","compose.yml","yml",[273,296,297,310,318,331,338,346,355,381,392,400,418],{"__ignoreMap":10},[298,299,302,306],"span",{"class":300,"line":301},"line",1,[298,303,305],{"class":304},"s4JwU","services",[298,307,309],{"class":308},"s95oV",":\n",[298,311,313,316],{"class":300,"line":312},2,[298,314,315],{"class":304},"  php",[298,317,309],{"class":308},[298,319,321,324,327],{"class":300,"line":320},3,[298,322,323],{"class":304},"    image",[298,325,326],{"class":308},": ",[298,328,330],{"class":329},"sU2Wk","my/laravel-app\n",[298,332,334],{"class":300,"line":333},4,[298,335,337],{"emptyLinePlaceholder":336},true,"\n",[298,339,341,344],{"class":300,"line":340},5,[298,342,343],{"class":304},"  nightwatch",[298,345,309],{"class":308},[298,347,349,351,353],{"class":300,"line":348},6,[298,350,323],{"class":304},[298,352,326],{"class":308},[298,354,330],{"class":329},[298,356,358,361,364,367,370,373,375,378],{"class":300,"line":357},7,[298,359,360],{"class":304},"    command",[298,362,363],{"class":308},": [",[298,365,366],{"class":329},"\"php\"",[298,368,369],{"class":308},", ",[298,371,372],{"class":329},"\"/var/www/html/artisan\"",[298,374,369],{"class":308},[298,376,377],{"class":329},"\"nightwatch:agent\"",[298,379,380],{"class":308},"]\n",[298,382,384,387,389],{"class":300,"line":383},8,[298,385,386],{"class":304},"    stop_signal",[298,388,326],{"class":308},[298,390,391],{"class":329},"SIGTERM\n",[298,393,395,398],{"class":300,"line":394},9,[298,396,397],{"class":304},"    healthcheck",[298,399,309],{"class":308},[298,401,403,406,408,411,413,416],{"class":300,"line":402},10,[298,404,405],{"class":304},"      test",[298,407,363],{"class":308},[298,409,410],{"class":329},"\"CMD\"",[298,412,369],{"class":308},[298,414,415],{"class":329},"\"healthcheck-nightwatch\"",[298,417,380],{"class":308},[298,419,421,424,426],{"class":300,"line":420},11,[298,422,423],{"class":304},"      start_period",[298,425,326],{"class":308},[298,427,428],{"class":329},"10s\n",[227,430,432],{"id":431},"how-the-health-check-works","How the health check works",[232,434,435,436,439,440,443],{},"The ",[273,437,438],{},"healthcheck-nightwatch"," command runs ",[273,441,442],{},"php artisan nightwatch:status"," to verify that the Nightwatch agent is running and connected. Docker uses this to determine container health and can automatically restart unhealthy containers.",[227,445,447],{"id":446},"advanced-configuration","Advanced configuration",[232,449,450,453,454,456,457,280,459,461],{},[259,451,452],{},"Graceful shutdown:"," The ",[273,455,275],{}," signal ensures the Nightwatch agent finishes processing current events before stopping. This is especially important for ",[273,458,279],{},[273,460,283],{}," images.",[463,464,465],"tip",{},[232,466,467,470,471,473,474,476,477,483,484,487],{},[259,468,469],{},"Multiple processes in one container:"," If you're running ",[273,472,283],{}," or ",[273,475,279],{}," and you'd like to have everything in a single container, you can ",[242,478,482],{"href":479,"rel":480,"target":481},"https://github.com/just-containers/s6-overlay/tree/master#writing-a-service-script",[246],"_blank","write your own S6 Overlay service script"," to properly manage multiple processes in a single container. Learn more about about this in our ",[242,485,486],{"href":168},"Using S6 Overlay guide",".",[227,489,491],{"id":490},"learn-more","Learn More",[263,493,494],{},[266,495,496],{},[242,497,499],{"href":244,"rel":498},[246],"Laravel Nightwatch Documentation",[501,502,503],"style",{},"html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":10,"searchDepth":312,"depth":312,"links":505},[506,507,508,509,510],{"id":229,"depth":312,"text":230},{"id":251,"depth":312,"text":252},{"id":431,"depth":312,"text":432},{"id":446,"depth":312,"text":447},{"id":490,"depth":312,"text":491},"Learn how to configure Laravel Nightwatch with Docker.","md",null,{"head":515,"layout":7},{"title":516},"Laravel Nightwatch with Docker - Docker PHP - Server Side Up",{"title":116,"description":511},"ZuD6yC_a2-tWV0nG21IEH1SXukLDMM_wTpmw1e_IpOg",[520,522],{"title":112,"path":113,"stem":114,"description":521,"children":-1},"Learn how to configure Laravel Reverb with Docker.",{"title":120,"path":121,"stem":122,"description":523,"children":-1},"Learn how to configure Laravel Octane with Docker.",1776367066595]