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.
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 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.
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:
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
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;
}
}
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
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
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
docker exec -it app bash
composer install
php artisan key:generate
php artisan migrate
Truy cập vào ứng dụng bằng cách mở link http://localhost:8001 trên trình duyệt.