laravel / sail

Docker files for running a basic Laravel application.
https://laravel.com/docs/sail
MIT License
1.65k stars 473 forks source link

PHP-FPM for Sail in production #123

Closed dbelyaeff closed 3 years ago

dbelyaeff commented 3 years ago

I'm started to use Sail in production and it's great!

But it lacks of one thing – an ability to use PHP-FPM as server instead of php development one (with artisan serve).

Development team, please, update dockers build file to have an ability to work through php-fpm.

driesvints commented 3 years ago

Hi @dbelyaeff. Sail is meant as a development tool and not as a production tool.

falur commented 3 years ago

sometimes I need testing api some services, and they want https. If you will add nginx + php-fpm will great

alagiesellu commented 3 years ago

But are there know dangers of using Sail in production env?

finagin commented 3 years ago

@dbelyaeff, you can publish and override Dockerfile and docker-compose.yml or using traefik

mmdglmr commented 2 years ago

@driesvints: would you answer to above questions, please? specific @alagiesellu question.

driesvints commented 2 years ago

@mmdglmr I already answered those. Sail is a development tool, not a production tool.

jayenne commented 2 years ago

a very kind & open request...

Accepting that Sail is a development tool, is there a tutorial, howto, dummys guide to transitioning from Sail to production?

I, like many others, have such limited expeience with Docker, we use Sail to develop on. now, once we are in a position to push to production, I for one, have no idea where to start the transition.

do i rip Sail out? do i edit the Sail docker files to include nginx and any other bits needed like ffmpeg, gmp etc?

*is Sail just the CLI part and so not actually part of the docker thing anyways?

Would you or someone who understands please help demistify the process for us. ty.

ammardev commented 2 years ago

a very kind & open request...

Accepting that Sail is a development tool, is there a tutorial, howto, dummys guide to transitioning from Sail to production?

I, like many others, have such limited expeience with Docker, we use Sail to develop on. now, once we are in a position to push to production, I for one, have no idea where to start the transition.

do i rip Sail out? do i edit the Sail docker files to include nginx and any other bits needed like ffmpeg, gmp etc?

*is Sail just the CLI part and so not actually part of the docker thing anyways?

Would you or someone who understands please help demistify the process for us. ty.

Sail has nothing to do with the production environment. It uses php artisan serve command to run the webserver so you can't use Nginx config files.

If you need docker for production you can build your own image. If you don't need it at all, you can use Nginx for production.

The following link documents the needed configurations: https://laravel.com/docs/8.x/deployment

metadeck commented 2 years ago

We are currently using sail for development and docker based deployments on Laravel Vapor. We have a requirement for FFMPEG so we've updated our sail container to build FFMPEG. This works well and we have spent a lot of time ironing out issues during development. We also followed the advice at https://blog.laravel.com/vapor-docker-based-deployments to add ffmpeg to our vapor container.

Our problem is that we have different versions of ffmpeg installed on development and on vapor. These version mismatches are causing intermittent errors on staging and production that are extrememly difficult to debug.

We are relatively new to docker and thats why we used Laravel Sail. We chose this as we believed the benefits were that our production, staging and local environments would behave exactly the same.

Some potential options below

  1. Can we deploy the sail 8.0/Dockerfile so that our production environment is exactly the same as our local?
  2. Can we use the laravelphp/vapor:php80 locally within sail so that our local environment matches our production and staging?

If I am missing something please point me in the correct direction to understand my options here.

TIA

brad-tilmor commented 2 years ago

Sail really should have an option to convert it to a production-ready container, or at least to publish Sail's dockerfiles or something similar. Making it development-only largely defeats the purpose of having a containerized workflow. One of the key selling-points of containerization is to have consistent and predictable environments. Not giving users the ability to deploy their Sail-based applications directly is a huge miss, imo. Having to essentially roll your own containers for production makes using Sail pointless, since we might as well just use those same containers for development as well.

alagiesellu commented 2 years ago

I found a very amazing tool for Laravel deployment LaraSail

https://github.com/thedevdojo/larasail

Does the work well.

ahmedsayedabdelsalam commented 2 years ago

what is the purpose for containerization then :D

amitleuva1987 commented 2 years ago

I found a very amazing tool for Laravel deployment LaraSail

https://github.com/thedevdojo/larasail

Does the work well.

This is 'DigitalOceon' Specific. May not work for other hosting providers (AWS, Azure, GCP)

amitleuva1987 commented 2 years ago

Well,

Below could be one of the solution.

1 . Install docker on your hosting machine (aws, azure, gcp, etc...) 2 . go to the root directory of your app 3 . type below command to install software dependencies.

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    laravelsail/php81-composer:latest \
    composer install --ignore-platform-reqs

4 . make docker container run in the detach mode (sail up -d)

amitleuva1987 commented 2 years ago

Refer this url for deploying laravel sail over aws,

vibonacci commented 10 months ago

Laravel offers paid service - Laravel Forge - for serving Laravel applications for production using real webservers. If they would include a sail build-for-production-with-nginx command, and extend the docker setup with Nginx and PHP-FPM, it would kill their business of their paid services...