How to create docker image which include React + Tailwind + Laravel?

Updated: Feb 14, 2025

How to create docker image which include React + Tailwind + Laravel?

To create a Docker image that includes React, Tailwind CSS, and Laravel, you'll need to use a multi-stage build process. Here's a step-by-step guide to create a Dockerfile for this project:

  1. Create a new directory for your project and initialize it with npm:
mkdir my-project && cd my-project
npm init -y
  1. Install the required dependencies for your project:
npm install react react-dom tailwindcss laravel --save
  1. Create a new .gitignore file to exclude unnecessary files and directories:
echo "node_modules/" > .gitignore
  1. Install Laravel using Composer:
composer init -y
composer require laravel/laravel
  1. Create a new Laravel project:
composer create-project --prefer-dist laravel/laravel public
  1. Install Tailwind CSS in Laravel:
cd public
npm init -y
npm install tailwindcss postcss autoprefixer
npx tailwindcss init
  1. Configure Tailwind CSS in Laravel:

Edit postcss.config.js file in the public directory:

module.exports = {
  plugins: [require('tailwindcss'), require('autoprefixer')],
};
  1. Create a Dockerfile in the root directory of your project:
touch Dockerfile
  1. Edit the Dockerfile to create a multi-stage build process:
# Use an official Node.js runtime as a parent image
FROM node:14

# Set the working directory in the container to /app
WORKDIR /app

# Add the current directory contents into the container at /app
ADD . /app

# Install any needed packages specified in package.json
RUN npm install

# Copy the production build so it can be used by Nginx
COPY . /var/www/html

# Use Laravel as a parent image for the second stage
FROM php:7.4-fpm

# Set the working directory in the container to /var/www/html
WORKDIR /var/www/html

# Copy the Laravel application code into the container
COPY --from=0 /app/public /var/www/html/public

# Install Laravel dependencies
RUN apt-get update && \
    apt-get install -y \
        libzip-dev \
        zip \
        unzip \
        curl \
        && docker-php-ext-install zip pdo pdo_mysql xml xmlrpc curl mailphp mbstring gd \
        && pecl install xdebug && docker-php-ext-enable xdebug \
        && rm -rf /var/lib/apt/lists/*

# Set up the Laravel environment variables
ENV APP_KEY=$(php artisan key:generate)
ENV APP_URL=http://localhost

# Install Laravel
RUN composer install --no-autoload --no-scripts

# Clear the cache
RUN php artisan config:cache && \
    php artisan route:cache && \
    php artisan view:clear

# Expose the port for the web server
EXPOSE 8000

# Start Laravel development server
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]
  1. Build the Docker image:
docker build -t my-project .

Now you have a Docker image that includes React, Tailwind CSS, and Laravel. You can use this image to run your application in a container.