Hôm nay mình sẽ chia sẻ với mọi người cách Setup Laravel 8 + Docker(mysql, adminer, nginx). Thông thường ta hay cài PHP mà Laravel yêu cầu. Như vậy thì mỗi Project Laravel khác nhau ta phải cài thêm php version khác, đúng là ta phải cài, nhưng như vậy nó quá mệt mỏi khi cài thêm nửa.
Docker sẽ giúp ta xử lý chúng một cách dễ dàng hơn nhiều, Mình nghĩ mọi người cũng biết sơ qua Docker là gì? rồi, nên mình sẽ không nói thêm nhiều nửa, với lại trên mạng search từ khóa thôi cũng rất rất là nhiều rồi, nói thêm nửa cũng làm cho bài viết khá dài và mệt thêm ::)
Câu lệnh trên, đầu tiên chúng ta git clone version của laravel về máy tính, sau đó trỏ tới thư mục vừa download về, tiếp tục chạy lệnh composer install , để cài thư viện laravel cho chúng ta, nó sẽ sinh ra thư mục vendor trong project
$ cp .env.example .env
Hãy mờ thư mục project lên và tìm file .env cập nhật lại các thông số sau:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel8x
DB_USERNAME=thanhhoa
DB_PASSWORD=12345678
Chú ý ở DB_HOST hãy đặt = db
DB_USERNAME , bạn đừng để root nhé, hãy đặt 1 username nào đó, để tí ta gọi nó trong file docker-compose.yml, phía sau ta sẽ tạo file này và gọi chúng
Sau khi có được một project Laravel , tiếp tục ta cần cài một số thư quan trọng như:
+ PHP Version (7.3 - 8.1) : php của chúng ta cần cài phải nằm trong khoảng này nhé
+ Mysql : Cài mysql để quản lý cơ sở dữ liệu
+ Nginx : Cấu hình domain của chúng ta thông qua nginx
+ Adminer : Cấu hình giao diện quản lý cơ sở dữ liệu
Các vấn đề trên chúng ta cần làm việc trong Docker nhé
# Tạo file Dockerfile trong thư mục project
File Dockerfile này chúng ta cấu hình phiên bản cài đặt version PHP phải phù hợp với Laravel đang sử dụng. Đồng thời Dockerfile này sử dụng PHP-FPM Alpine, chúng ta có thể cài đặt các tiện ích mở rộng cần thiết, đặt thư mục làm việc, sao chép các tệp dự án Laravel và đặt lệnh để chạy Laravel.
FROM php:8.1-fpm
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
RUN apt-get update; \
# Imagick extension
apt-get install -y libmagickwand-dev; \
pecl install imagick; \
docker-php-ext-install gd; \
docker-php-ext-enable imagick; \
# Success
true
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
OKay, các bạn xem file bên trên ta có gọi tới file Dockerfile để chạy cho ứng dụng app laravel của chúng ta. Nó sẽ đọc file Dockerfile và cài đặt php version và các tiện ích cần để chạy được laravel
Bạn sẽ thấy thư mục docker-compose/sql nó là chứa đựng file sql, bạn hãy tạo thư mục docker-compose/sql và copy file database của bạn vào thư mục đó. Chương trình sẽ tự import database
Tiếp tục tại phần nginx, mình có tạo đường dẫn thư mục docker-compose/nginx để cài đặt file cấu hình server.conf trong thư mục đó
Cấu nhình nginx thì đã xong rồi, mình muốn chia sẻ thêm mọi người là bên trong file docker-compose.yml mình có sử dụng adminer để quản lý database , giúp cho chúng ta dễ dàng thao tác hơn, bạn nào không thích thì bỏ nó ra cũng không sao, hoặc muốn sử dụng nó hay dùng phpmyadmin thay thế nó cũng được nhé, để lần sao mình chia sẻ cách sử dụng phpmyadmin trong docker nhé, nó hơi lu bu xíu
Okay vậy mọi thứ ok rồi, chúng ta thử chạy xem, thành quả nảy giờ chúng ta làm nhé
$ cd laravel-8.x
$ docker-compose up --build
Hoặc
$ docker-compose up -d
// close
$ docker-composer down -v
Sau khi build thành công bạn có thể gõ trên trình duyệt :
http://localhost:8000 -> web laravel
http://localhost:8080 -> vào quản lý adminer
Nếu bạn muốn trỏ vào app laravel sau khi chạy docker xong, bạn chạy câu lệnh sau
Còn nếu bạn cần xem database trong mysql của bạn thì chạy lệnh bash sao docker exec -it [container name] bash
$ docker exec -it skp-db bash
$ mysql -u root -p
Sau đó bạn sữ dựng lệnh mysql bình thường: Chú ý: password là password trong file .env bạn vừa cấu hình bên trên "12345678"
hoặc bạn chạy lệnh : docker-compose exec db bash
Okay trường hợp xấu là sau khi bạn chạy ok hết mà lên website rõ http://localhost:8000 bị lỗi như sau: thì xin chúc mừng bạn đã chạy thành công, còn lỗi phía dưới chỉ là bị quyền giới hạn thôi, không sau
UnexpectedValueException The stream or file "/var/www/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied
Bình luận (0)