Lệnh bin sh php artisan migrate trả về mã khác 0 1
Gần đây, bạn đã phát hành một ứng dụng chỉ để thấy rằng, trong một khoảng thời gian khá ngắn, đó là tất cả các cơn thịnh nộ. Mọi người không thể có đủ của nó. Do đó, các yêu cầu tăng nhanh đến mức nhóm phát triển bắt đầu nói về việc "mở rộng quy mô" Show Ngày xửa ngày xưa, điều này có nghĩa là phải trả tiền cho một máy chủ mạnh hơn (mở rộng theo chiều dọc). Tuy nhiên, sự gia tăng của các vùng chứa trong những năm gần đây có nghĩa là giờ đây có thể nhanh chóng—và tương đối tiết kiệm chi phí—thêm nhiều vùng chứa hơn và mở rộng quy mô ứng dụng của bạn theo chiều ngang Làm như vậy mang lại cho bạn hai lợi thế chính. Đầu tiên, bạn không phải chịu thêm chi phí cho một máy chủ mạnh hơn. Thứ hai, bạn có thể tăng hoặc giảm quy mô ứng dụng của mình dựa trên nhu cầu hiện tại của khách hàng Trong bài này mình sẽ hướng dẫn các bạn sử dụng Docker với project Laravel. Đây là bước đầu tiên trong việc xây dựng một ứng dụng có thể được điều chỉnh tỷ lệ phù hợp để xử lý cả mức tăng và giảm trong việc sử dụng ứng dụng Apache sẽ được sử dụng làm máy chủ web và PostgreSQL sẽ cung cấp công cụ cơ sở dữ liệu. Ứng dụng được xây dựng sẽ hiển thị các trích dẫn nổi tiếng của các nhà sử học nổi tiếng điều kiện tiên quyếtĐể làm theo hướng dẫn này, bạn sẽ cần
Bắt đầuĐể bắt đầu, hãy tạo một thư mục mới có tên là 4
Vì chúng tôi có các thành phần khác nhau của ứng dụng cần giao tiếp với nhau, nên chúng tôi sẽ sử dụng Docker Compose để xác định các dịch vụ của mình. Cho rằng, trong thư mục gốc của thư mục 4, hãy tạo một tệp mới có tên docker-compose. yml
Tệp này sẽ chứa tất cả cấu hình cho các vùng chứa được tạo trong cấu hình ứng dụng của chúng tôi từ cách các vùng chứa được tạo cho đến mạng và khối lượng có thể truy cập được vào các vùng chứa Trong docker-compose. yml, thêm vào như sau
Phiên bản đề cập đến phiên bản lược đồ và các dịch vụ sẽ xác định danh sách các vùng chứa mà ngăn xếp ứng dụng của chúng tôi sẽ bao gồm. Dịch vụ thực sự chỉ là “công-ten-nơ trong sản xuất. ” Trong các phần sau, chúng tôi sẽ mô tả các thùng chứa cho cơ sở dữ liệu, máy chủ web Apache và PHP Xây dựng bộ chứa cơ sở dữ liệuTrong 6, cập nhật mục nhập 7 như sau
8 đặt tên của vùng chứa khi nó chạy, thay vì để Docker Compose tự động tạo tên đó 9 cho Docker biết kế hoạch chi tiết mà chúng tôi muốn xây dựng vùng chứa, trong trường hợp này, chúng tôi chỉ định 00 vì chúng tôi muốn sử dụng PostgreSQL làm công cụ cơ sở dữ liệuKhóa 01 chỉ định danh sách các biến môi trường, chẳng hạn như tên của cơ sở dữ liệu và mật khẩu mặc định. Vì chúng tôi không chỉ định tên người dùng nên tên người dùng cơ sở dữ liệu sẽ là "postgres"Sử dụng khóa 02, chúng tôi ánh xạ một cổng trên máy phát triển cục bộ của chúng tôi tới một cổng trong vùng chứa để chúng tôi có thể kết nối với cơ sở dữ liệu bằng công cụ GUI. Cổng được chỉ định bên trái dấu hai chấm là cổng trên máy tính. Cổng được chỉ định bên phải là cổng trong vùng chứaGhi chú. Nếu bạn có một phiên bản PostgreSQL đang chạy hoặc cổng 4306 bị chiếm dụng, bạn có thể chỉ định một cổng khác trên máy tính của mình Tiếp theo, chúng tôi khai báo một ổ đĩa bằng phím 03. Theo tài liệu DockerCác ổ đĩa là cơ chế ưa thích để duy trì dữ liệu được tạo và sử dụng bởi các bộ chứa Docker Trong trường hợp này, chúng tôi khai báo một ổ đĩa để cơ sở dữ liệu của chúng tôi không bị mất khi các thùng chứa bị phá hủy hoặc xây dựng lại Xây dựng bộ chứa PHP và ApacheKhông giống như bộ chứa cơ sở dữ liệu, chúng tôi cần chỉ định một số hướng dẫn bổ sung để thiết lập bộ chứa PHP/Apache của chúng tôi. Để làm điều này, chúng tôi sẽ xây dựng bộ chứa PHP từ Dockerfile. Tại thư mục gốc laravel_docker, tạo thư mục có tên php. Sau đó, trong laravel_docker/php, tạo một tệp có tên Dockerfile Ghi chú. tập tin này không có phần mở rộng 0Trong 04, thêm vào như sau 6Hình ảnh docker PHP chính thức cung cấp một biến thể đi kèm với máy chủ Apache. Bằng cách chỉ định điều này trong hướng dẫn 05, bộ chứa cơ sở của chúng tôi đi kèm với cài đặt ApacheNgoài việc giàn giáo một vùng chứa từ hình ảnh PHP, chúng tôi làm như sau
Tiếp theo, cập nhật docker-compose. yml như sau 8Vùng chứa 06 được định nghĩa khác nhau trong docker-compose. yml hơn vùng chứa 07. Thay vì chỉ định một hình ảnh, chúng tôi chỉ định bối cảnh xây dựng. Bằng cách này, khi lệnh docker-compose được chạy, Dockerfile được khai báo trong thư mục php sẽ được sử dụng để xây dựng vùng chứaTiếp theo, cổng 8080 trên máy phát triển cục bộ được ánh xạ tới cổng 80 trong vùng chứa, giống như chúng ta đã làm với vùng chứa cơ sở dữ liệu. Cổng 80 được sử dụng vì cấu hình máy chủ ảo được chỉ định trong 08 lắng nghe trên cổng nàyMột lần nữa, chúng tôi khai báo một ổ đĩa để duy trì dữ liệu do vùng chứa tạo ra. Trong trường hợp này, ứng dụng Laravel của chúng ta sẽ được tạo trong thư mục /var/www/laravel_docker của bộ chứa 06. Tuy nhiên, nó sẽ được duy trì trong thư mục 60 trong thư mục dự án trên máy phát triển cục bộMột ổ đĩa bổ sung được khai báo để liên kết cấu hình máy chủ ảo cho ứng dụng của chúng ta với 000-default. conf host mà Apache kích hoạt theo mặc định. Điều này giúp chúng tôi không phải vô hiệu hóa cấu hình mặc định, bật cấu hình của chúng tôi và tải lại máy chủ apache mỗi khi vùng chứa được xây dựng hoặc xây dựng lại Sau đó, chúng tôi giới thiệu một khóa cấu hình mới. 61. Điều này cho Docker biết rằng chúng tôi muốn bộ chứa cơ sở dữ liệu được xây dựng trước bộ chứa 06Tạo thư mục 60 trong thư mục gốc của dự án 7Khi chúng tôi dàn dựng dự án Laravel của mình từ vùng chứa 06, các tệp dự án sẽ được duy trì ở đây. Sau đó, tạo một thư mục có tên là 65. Trong đó, tạo một tệp có tên 66 1Thêm phần sau vào 67 3Với điều này, cuối cùng chúng tôi cũng có thể xây dựng các thùng chứa của mình. Để làm như vậy, hãy chạy lệnh sau 0Nếu bạn mở ứng dụng Docker Desktop, bạn sẽ thấy vùng chứa mới được tạo của mình như trong ảnh chụp màn hình bên dưới Thiết lập ứng dụng LaravelĐể thiết lập ứng dụng Laravel, hãy khởi tạo một bộ chứa trong bộ chứa 06 bằng lệnh bên dưới 1Thao tác này sẽ mở một CLI trong bộ chứa php-apache. Tạo ứng dụng Laravel bằng lệnh sau 2Khi điều này được hoàn thành, điều hướng đến http. //máy chủ cục bộ. 8080/ sẽ hiển thị trang chào mừng mặc định của Laravel Ngoài ra, nếu bạn nhìn vào thư mục src, bạn sẽ thấy rằng các tệp dự án Laravel cũng đã được thêm vào đó Trong src/. env, chỉnh sửa các tham số cơ sở dữ liệu để phù hợp với những điều sau 3Xây dựng ứng dụngChúng tôi đang xây dựng một ứng dụng báo giá, vì vậy hãy tạo mô hình cho nó. Trong vùng chứa 06 của bạn, hãy chạy lệnh sau 4Đối số 80 cho phép nghệ nhân biết chúng tôi muốn tạo một nhà máy để báo giá. Theo cách tương tự, 81 dành cho quá trình di chuyển và 82 dành cho trình tạo cơ sở dữ liệuTrong 83, hãy cập nhật hàm 84 để khớp với những điều sau 5Tiếp theo, mở 85 và thêm phần sau vào hàm 86 6Điều này tạo ra một trích dẫn từ QuoteFactory 50 lần, lưu nó vào cơ sở dữ liệu mỗi lần Ghi chú. Đừng quên thêm phần nhập này 7Trong 87, thêm phần sau vào chức năng chạy 8Điều này chạy 88 khi lệnh 89 được chạy. Tiếp theo, trong 70, hãy thêm phần sau vào hàm 71 9Để chạy di chuyển của bạn và khởi tạo cơ sở dữ liệu, hãy chạy lệnh sau trong bộ chứa php-apache của bạn 0Để xem những gì đã được thêm vào cơ sở dữ liệu, hãy mở một dòng lệnh tới vùng chứa cơ sở dữ liệu bằng lệnh sau 1Tiếp theo đăng nhập vào dịch vụ PostgreSQL của bạn bằng lệnh sau 2Tiếp theo, chạy truy vấn SQL để lấy tất cả các mục trong bảng báo giá 3Đầu ra phải tương tự như ảnh chụp màn hình bên dưới Với điều đó, hãy tạo một bộ điều khiển để xử lý các yêu cầu báo giá bằng lệnh sau 4Mở src/app/Http/Controllers/QuoteController. php và cập nhật nó để phù hợp với những điều sau đây 5Trong hàm 72, chúng tôi lấy tất cả các trích dẫn từ cơ sở dữ liệu và chuyển chúng vào chế độ xem ( quotes/index. lưỡi. php) để được hiển thị tương ứng. Hiện tại, chế độ xem không tồn tại, vì vậy hãy tạo chế độ xem đó bằng cách chạy các lệnh bên dưới 6Mở src/resources/views/quotes/index. lưỡi. php và thêm vào như sau 7Trong mẫu này, chúng tôi sử dụng Bootstrap để tạo kiểu cho bảng trích dẫn. Sau đó, chúng tôi sử dụng một chỉ thị vòng lặp foreach để lặp qua các trích dẫn nhận được từ 73 và hiển thị trích dẫn, lịch sử và năm tương ứngCuối cùng, cập nhật định tuyến để tải các trích dẫn trên trang chỉ mục. Để thực hiện việc này, hãy mở 74 và cập nhật khai báo tuyến đường ở đó để khớp với thông tin sau 8Bằng cách này, hàm 72 trong 73 sẽ được gọi khi trang chỉ mục được truy cập thay vì trả về trang chào mừngKiểm tra các thay đổiĐể kiểm tra các thay đổi, hãy điều hướng đến http. //máy chủ cục bộ. 8080/ nơi bạn sẽ thấy trang hiển thị tương tự như ảnh chụp màn hình bên dưới Xé nát tất cảTrước đó, chúng tôi đã tạo và xây dựng các thùng chứa của mình bằng lệnh 77. Vì một số lý do, chẳng hạn như dung lượng ổ cứng thấp hoặc các ứng dụng dư thừa, bạn có thể muốn dọn dẹp hệ thống của mình. Docker đã cung cấp một điều khoản cho điều đó. Chạy lệnh sau để dừng và xóa vùng chứa cũng như tất cả các mạng được liên kết 9Bạn sẽ thấy đầu ra sau Mở rộng ứng dụngCó thể một phiên bản dịch vụ có thể không đủ để xử lý đầy đủ tất cả lưu lượng truy cập vào ứng dụng. Đối với những lúc như thế này, Docker hỗ trợ nhân rộng các dịch vụ tôi. e. , tạo nhiều phiên bản của một dịch vụ, bằng cách sử dụng cờ 78Ví dụ: chúng tôi sẽ mở rộng quy mô dịch vụ 06 của mình. Để làm điều này, hãy mở docker-compose. yml. Trong đó, chúng tôi sẽ thực hiện hai thay đổi. Đầu tiên là xóa cấu hình tên vùng chứa. Điều này là do tên vùng chứa phải là duy nhất, nếu chúng ta cố gắng tạo nhiều dịch vụ có cùng tên thì Docker sẽ báo lỗiTương tự, chúng tôi sẽ sửa đổi cấu hình cổng của dịch vụ để Docker có thể tự động gán cổng cho từng dịch vụ mới được tạo. Cũng giống như tên vùng chứa, hai dịch vụ không thể được liên kết với cùng một cổng Để thực hiện những thay đổi này, hãy cập nhật cấu hình dịch vụ 06 để phù hợp với những điều sau 0Với cấu hình được cập nhật, hãy tạo 10 phiên bản dịch vụ 06 của chúng tôi bằng cách chạy lệnh sau 1Khi điều này được hoàn thành, bạn sẽ thấy một cái gì đó tương tự như ảnh chụp màn hình bên dưới được in ra thiết bị đầu cuối 2Để kiểm tra xem mọi thứ có hoạt động không, hãy chạy `docker-compose ps`. Bạn sẽ thấy đầu ra tương tự như ví dụ bên dưới 3Đó là cách bắt đầu với Docker và LaravelChúng tôi không chỉ có thể xây dựng các vùng chứa từ hình ảnh và Dockerfiles mà còn có thể làm cho chúng giao tiếp với nhau, cho phép chúng tôi chạy ứng dụng Laravel và cơ sở dữ liệu của mình trong các vùng chứa riêng biệt Đây là bước đầu tiên trong việc xây dựng ngăn xếp ứng dụng có thể mở rộng theo chiều ngang. Bằng cách tận dụng cơ sở hạ tầng điều phối vùng chứa, các vùng chứa có thể được tạo/hủy để đáp ứng số lượng yêu cầu được xử lý bởi máy chủ Toàn bộ cơ sở mã cho hướng dẫn này có sẵn tại đây trên GitHub. Hãy khám phá thêm. Mã hóa vui vẻ Oluyemi là một người đam mê công nghệ với nền tảng về Kỹ thuật Viễn thông. Với niềm đam mê giải quyết các vấn đề hàng ngày mà người dùng gặp phải, anh ấy đã mạo hiểm tham gia lập trình và từ đó đã hướng các kỹ năng giải quyết vấn đề của mình vào việc xây dựng phần mềm cho cả web và di động. Là một kỹ sư phần mềm toàn diện với niềm đam mê chia sẻ kiến thức, Oluyemi đã xuất bản một số lượng lớn các bài báo và nội dung kỹ thuật trên một số blog trên internet. Là người am hiểu công nghệ, sở thích của anh ấy bao gồm thử các ngôn ngữ và khuôn khổ lập trình mới |