Cấu hình Laravel và Docker với Vessel

Vessel là một lightweight docker environment cho Laravel, có nghĩa là nó chỉ là một tập nhỏ các tập tin thiết lập local docker development environment và không có cài đặt bổ sung cho globally.

Cài đặt Docker và Docker-compose

Docker là một dự án mã nguồn mở dựa trên Linux container, nếu bạn không quen thuộc với docker, bạn có thể tham khảo bài viết này "Tìm hiểu Docker" của bạn Trần Văn Cường .

Ở thời điểm này Vessel chỉ làm việc trên Mac và Linux bởi vì nó sử dụng một bash script để chạy Docker commands.

Dành cho Linux Ubuntu distribution cách đơn giản nhất để cài đặt docker như sau:

curl -fsSL get.docker.com | sudo sh
sudo usermod -aG docker $USER // Add user vào docker group

Để cài đặt docker compose chạy command này để download phiên bản mới nhất:

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Tiếp theo, thiết lập executable permissions cho file binary.

sudo chmod +x /usr/local/bin/docker-compose

Tìm hiểu thêm về cách cài đặt docker: docker , docker-compose

Bắt đầu với Vessel

Đầu tiên bạn cần tạo 1 Laravel project như sau:

composer create-project --prefer-dist laravel/laravel vessel_test

Tham khảo Laravel installation document

Như tôi đã nói Vessel là lightweight docker environment, nó bao gồm một Laravel service provider giúp cho việc cài đặt development enviroment đơn giản hơn. Tất cả bạn cần làm là thiết lập dev với Vessel:

Di chuyển working directory tới project

cd vessel_test

Cài đặt Vessel vào project

composer require shipping-docker/vessel

Publish vessel command và Docker files

php artisan vendor:publish --provider="Vessel\VesselServiceProvider"

Chạy cái này để init project. Phải chạy với "bash" cho đến khi init xong:

bash vessel init

Lần đầu bắt start 1 ứng dụng với Vessel sử dụng init command, vessel sẽ download những official Docker images sau:

  • PHP 7.1
  • MySQL 5.7
  • Redis
  • NodeJS với NPM, Yarn, và Gulp

Start vessel:

./vessel start

Vào http://localhost trên trình duyệt để xem ứng dụng đã được chạy!

Trong trường hợp gặp lỗi EADDRINUSE do cổng 80 hoặc 3396 đã bị ứng dụng khác chiếm dụng. stop vessel:

./vessel stop

Thêm đoạn sau đây vào file .env trong project, sau đó start:

APP_PORT=8080
MYSQL_PORT=33060
Or when starting Vessel:

Hoặc start bằng command như sau:

APP_PORT=8080 MYSQL_PORT=33060 ./vessel start

Sau đó bạn có thể xem project tại http://localhost:8080 và truy cập vào database từ cổng 33060.

Và cuối cùng, Vessel cũng có tài liệu bao gồm mọi thứ bạn cần biết để bắt đầu: official documentation

Bonus: Vessel Cheat Sheet

Bài viết đã được dịch và chỉnh sửa cho phù hợp từ nguồn: Laravel & Docker, Zero config with Vessel