ItSolutionStuff.com

Laravel Docker #1 – Basic Set Up for Local Development

By Hardik Savani August 30, 2025
Laravel

If you want to use Laravel with Docker, this guide will help you. Docker makes it very easy to create and manage your development setup without installing everything on your computer.

In this article, we will create a Laravel project and then set up Docker step by step. We will make a Dockerfile, an Nginx config file, and docker-compose.yml file to run Laravel inside Docker.

Step 1: Create Laravel Project

First, create a fresh Laravel project by running the below command:

laravel new my-app

Step 2: Create Dockerfile

Now, create a new file named Dockerfile and add the following code:

Dockerfile

FROM php:8.3-fpm

WORKDIR /var/www/html

RUN apt-get update & apt-get install -y     libzip-dev     unzip     && docker-php-ext-install zip pdo_mysql

# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

COPY . /var/www/html

# Install PHP dependencies
RUN composer install

RUN chown -R www-data:www-data /var/www/html
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache /var/www/html/vendor
RUN chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache /var/www/html/vendor

EXPOSE 80

Step 3: Create NGINX Config File

Next, create an Nginx config file at .docker/nginx/default.conf and add this code:

.docker/nginx/default.conf

server {
    listen 80;
    index index.php index.html;
    root /var/www/html/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass web:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }

    location ~ /\.ht {
        deny all;
    }
}

Step 4: Create docker-compose.yml

Finally, create a docker-compose.yml file and place the following code in it:

docker-compose.yml

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    image: my-laravel-app
    volumes:
      - .:/var/www/html
      - /var/www/html/storage
      - /var/www/html/bootstrap/cache
    working_dir: /var/www/html
    user: "www-data"

  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:  
      - .:/var/www/html
      - ./.docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - web

Run Laravel App:

All the required steps have been done, now you have to type the given below command and hit enter to run the Laravel app:

php artisan serve

Now, Go to your web browser, type the given URL and view the app output:

http://localhost:8080

Output:

Now you can use.

Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

📺 Subscribe on YouTube

More Posts You'll Love