Nếu bạn đã từng chạy ứng dụng PHP sử dụng comand line, sử dụng Docker có thể là một cách tốt để tăng khả năng tái sử dụng và tính linh động cho đoạn code của bạn. Docker cho phép bạn chạy đoạn code cô lập bên trong Container thay vì chạy trực tiếp trên máy chủ, nghĩa là thậm chí bạn không có version PHP hay các extension được cài đặt, bạn sẽ vẫn đảm bảo được rằng code của mình giống như Docker của ai đó với cách tương tự
Code PHP
Chúng ta hãy cùng tạo một đoạn code PHP đơn giản
hello.php
<?php $text = "Hello World!"; echo $text;
Nào hãy mở terminal và chuyển đến thư mục code được lưu. Chúng ta sẽ thử chạy đoạn code bên trong Docker container sử dụng version mới nhất của PHP CLI
$ docker run --rm -v $(pwd):/app -w /app php:cli php hello.php
Khi chạy bạn sẽ thấy rằng PHP Cli Container sẽ được tải về (lần đầu tiên), sau đó bạn sẽ nhìn thấy kết qủa được in ra Hello World!
Bạn đã chạy đoạn code PHP trong Container
Giải thích
Nào hãy cùng nhau tìm hiểu ý nghĩa của câu lệnh bên trên
docker run
: Đây là Docker câu lệnh để chạy câu lệnh bên trong một Docker mới. Có rất nhiều lựu chọn tham số để chạy câu lệnh nhưng trong bài viết này chúng ta sẽ chỉ dùng nó đơn giản nhất có thể--rm
: Bảo với Docker rằng remove – xoá Container sau khi câu lệnh chạy xong. Hoặc bạn có thể lưu tên và container để chạy lại-v $(pwd):/app
: Yêu cầu Docker mount một volume. Chúng ta thường truyền đường dẫn đến thư mục trên thư mục root, dấu hai chấm, sau đó là đường dẫn đến thư mục bên trong Container. Mount là một công cụ rất mạnh, nhưng trong ví dụ đơn giản này, chúng ta chỉ mount thư mục hiện tại từ terminal vào trong thư mục/app
của Container-w /app
: Định nghĩa thư mục Docker (Working directory) hoạt động (chạy chương trình). Đây chính là nơi tìm thấy code khi truyền bên trong câu lệnh chạy. Do chúng ta mount code vào bên trong nên chúng ta rõ ràng muốn Docker chạy code từ thư mục đó.php:cli
: 3 mục đầu tiên trong danh sách này là các cờ chạy Docker, nhưngphp:cli
là image mà chúng ta muốn sử dụng cho Container này. Có rất nhiều PHP Containers khác trên Dockerhub. Nếu bạn muốn cài đặt sử dụng web app hay apache server thì bạn có thể tìm kiếm và sử dụng.- php hello.php: Cuối cùng, đây chính là câu lệnh mà chúng ta muốn chạy trên Container. Nó được chạy trong thư mục Docker hoạt động (
/app
) mà chúng ta đã cấu hình ở trên.
Bạn có thể nghĩ rằng câu lệnh quá dài để viết chỉ để chạy một đoạn code PHP, nhưng hay nghĩ về những gì mà bạn sẽ không cần phải làm. Bạn sẽ không cần phải cài đặt PHP trên máy của bạn, bạn có thể chạy câu lệnh đó với PHP version khác nhau bằng cách điều chỉnh tham số php:cli