Install laravel 12 with docker

  • March 13, 2025
  • 110

Hôm nay chúng ta cùng tìm hiểu các bước để build môi trường chạy laravel 12 với docker. Để cài đặt laravel application chúng ta cần cài đặt php, composer, node and npm cho máy tính của mình trước.

Installing PHP and the Laravel Installer

Cài đặt php, composer sử dụng command sau


/bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)"

Cài đặt Laravel installer với composer


composer global require laravel/installer

Create laravel application

Create laravel application sử dụng laravel installer


// Add laravel command to zsh
export PATH="$HOME/.composer/vendor/bin:$PATH"

// Create application
laravel new inertia2

Đặt tên application và cấu hình theo hướng dẫn của laravel installer là chúng ta đã làm xong bước tạo laravel application. Tiếp theo cần thiết lập docker để chạy application.

Run laravel app with docker

1. Create docker compose

Tạo file docker-compose.yml trong thư mục gốc của dự án


services:
  app:
    build:
      context: ./docker/php-fpm
      dockerfile: Dockerfile
    container_name: laravel_app
    restart: unless-stopped
    working_dir: /var/www
    volumes:
      - ./:/var/www
    networks:
      - app_network
    ports:
      - ${DOCKER_PHP_PORT}:9000

  nginx:
    image: nginx:alpine
    container_name: laravel_nginx
    restart: unless-stopped
    ports:
      - ${DOCKER_NGINX_PORT}:80
    volumes:
      - ./:/var/www
      - ./docker/nginx/conf.d:/etc/nginx/conf.d
    networks:
      - app_network

  db:
    image: mysql:8.0
    container_name: laravel_db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_USER: ${DB_USERNAME}
    volumes:
      - dbdata:/var/lib/mysql
    ports:
      - ${DOCKER_DB_PORT}:3306
    networks:
      - app_network

networks:
  app_network:
    driver: bridge

volumes:
  dbdata:

2. Create dockerfile

Tạo file docker/php-fpm/Dockerfile build môi trường sử dụng php-8.4-fpm


FROM php:8.4-fpm

# Install system dependencies
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    git \
    curl \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd pdo_mysql opcache

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

# Set working directory
WORKDIR /var/www

3. Create config nginx

Tạo file cấu hình nginx docker/nginx/conf.d/default.conf


server {
    listen 80;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    
    root /var/www/public;

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

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

4. Update env config

Cập nhật thêm cấu hình vào file .env


DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel_inertia
DB_USERNAME=laravel_inertia
DB_PASSWORD=laravel_inertia

DOCKER_NGINX_PORT=8001
DOCKER_PHP_PORT=9000
DOCKER_DB_PORT=3306

5. Buid and start container

Build and start các container khai báo trong file docker-compose


// Build and start app
docker-compose up -d --build

// Check all log
docker-compose log -f

// Check log by service
docker-compose log app -f

6. Set File Permissions

Sau khi các container chạy xong thì chúng ta sẽ thêm quyền cho thư mục


docker exec -it app chmod -R 777 storage bootstrap/cache

7. Install Dependencies


docker exec -it app bash

composer install
php artisan key:generate
php artisan migrate

8. Access Laravel app

Truy cập vào ứng dụng bằng cách mở link http://localhost:8001 trên trình duyệt.

Tổng kết

Như vậy là chúng ta đã sử dụng docker để cài đặt xong môi trường chạy laravel 12 sử dụng php8.4-fpm thành công. Thanks for reading...

Tài liệu tham khảo

https://laravel.com/docs/12.x/installation