Laravel Docker #1 – Basic Set Up for Local Development
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
Now you can use.