THẢO LUẬN

thg 11 19, 2020 2:42 CH

Bài chia sẻ rất hay, cảm ơn bạn. Sẵn cho mình hỏi là có best practice về việc nên sử dụng màu hex hay rgb color ko bạn?

+1

thoải mái e, API e viết ở routes/api.php cũng được.

Lỗi 404 in ra là do e đang thiếu tiền tố /api khi gọi API nên lỗi in ra là 404 ko tìm thấy đó.

Chú ý là tất cả các API viết ở routes/api.php thì khi gọi e phải thêm có tiền tố là /api. Ví dụ: http://localhost:8000/api/users (bình thường nếu viết bên web.php thì sẽ gọi là /users luôn)

0

Chả hiểu sao loạt bài hay như vậy lại tương tác ít, cảm thấy chạnh lòng...

0

chào bạn,

Ở ảnh đầu tiên lỗi của bạn là do supervisor ban đầu được chạy bằng non-root user sẵn rồi, sau đó ở cấu hình process cronjob của bạn thì bạn lại tiếp tục set user=<1 user khác>, và điều này là ko đc, khi chạy container với non-root thì process cronjob của bạn phải được chạy chính bằng user chạy supervisor luôn. Cách giải quyết là trong file cấu hình cho cronjob của bạn bạn bỏ user=... đi.

Bỏ đi thì cronjob đã chạy đc hay chưa?

Câu trả lời là chưa 😄. Lỗi ở ảnh 2 sẽ xuất hiện (hoặc 1 lỗi tương tự)

Vì master process của crontab yêu cầu phải được chạy bằng user root, tức là command để khởi động crontab là crontab -b... phải được chạy bằng user root, sau đó các cronjob được khởi tạo từ crontab mới có thể chạy được bằng non-root hay root thì tính sau.

Vấn đề ở đây là, vì container của chúng ta chạy bằng non-root user, nên ở CMD cuối Dockerfile khi ta khởi động supervisor, thì supervisor sẽ được chạy bằng non-root -> tất cả các process ta cấu hình sẽ được chạy bằng non-root theo -> crontab được khởi động bằng non-root -> Lỗi.

Mình đã thử nhiều cách để thử fix việc này: chạy supervisor trước khi đổi user, thử entrypoint, dùng gosu,... nhưng đều ko được.

Và cuối cùng mình chốt lại là phải khởi động crontab bằng tay mỗi lần ta khởi động container như sau:

docker-compose exec -u root app sh       # exec vào container bằng user root
crond -b      # chạy master process của crontab

Cũng ko vất lắm chỉ là hơi bất tiện chút thôi. Nếu bạn tìm được cách nào chạy ngay được trong lúc build image thì comment cho mình biết nhé (mình vẫn nghĩ là có cách giải quyết nhưng chưa có tgian để vọc tiếp)

Bạn có thể tham khảo project realtime chat laravel docker của mình ở đây, ở đó mình có setup đầy đủ các thành phần: mysql, redis, horizon, worker, cronjob, nginx,... có cả cronjob và tất cả đều được chạy bằng non-root user (branch docker-non-root nhé). Và ở readme mình có note là để chạy cronjob thì phải khởi động master process crontab thủ công sau khi chạy container.

Ở project của mình bạn xem cấu hình supervisor mình để ở folder .docker nhé. Ở đó master process của supervisor mình chạy bằng user www, các file cấu hình các process (trong folder supervisor.d) như horizon, php-fpm ko cần thêm user=... mà sẽ tự lấy theo user chạy master process luôn. Còn cronjob thì mình set trực tiếp trong Dockerfile (bạn tách nó thành 1 file rồi dùng COPY cũng đc)

0

Mình cũng chã dám động vào mớ tk đó luôn ạ, sợ bóc lịch dài hạn bác ơi :v

0
thg 11 19, 2020 10:18 SA

1.PNG Em có chút thắc mắc mong được giải đáp ạ! Thứ nhất là khi viết web bằng Laravel+VueJs thì phần API viết bằng PHP như trong route/api.php bình thường được không ạ? Vì em viết phần API cho web bằng PHP nhưng khi load thử link để đc file Json thì nó luôn hiện lỗi 404, theo như e thấy là do nó chỉ ưu tiên duyệt qua phần route/web.php trước rồi trả kết quả thay vì duyệt qua phần api ( vì những link e để sau phần khai báo vue kia cũng đều ko load đến được mà đều trả 404) Có cách nào khắc phục chuyện này không ạ?

0

vấn đề là b làm gì đc với đống tài khoản đó 😄

0
thg 11 19, 2020 8:16 SA

Bạn ơi minh đang muốn mua code này vs muốn dk bạn vs Mạnh hướng dẫn chi tiết. Bạn liên hệ giúp mình qua sdt 033 711 4319 hoặc gmail nguyenduykhanh92bkhn@gmail.com Thank bạn

0
thg 11 19, 2020 8:08 SA

@buiquangmanh Mạnh ơi bạn có bán sản phẩm code này không. Từ giờ tới thứ 6 bạn mà không bạn, mình gặp nhau được không bạn. Check mail giúp mình với. Thank bạn

0

Hi @maitrungduc1410 Cho mình hỏi mình set cronjob chạy. khi k để user thì log cron báo như vậy Capture.PNG

còn thêm user=root vô cron.conf thì bị lỗi Capture2.PNG

làm sao để cho chạy được cron bạn. mình set cron cho laravel

0
thg 11 19, 2020 7:21 SA

cám ơn bạn đã cho t thêm động lực viết tiếp phần 3 😂😂

0
thg 11 19, 2020 7:17 SA

Cám ơn bạn 😗

0
thg 11 19, 2020 6:54 SA

bài dịch vô cùng chất lượng cảm ơn tác giả đã bỏ 1 tiếng ra để dịch bài nay ạ

-1
thg 11 19, 2020 6:53 SA

Anh viết hay quá

0

Cảm ơn bạn đã chia sẻ. Bài viết rất hữu ích. ❤️

0
thg 11 19, 2020 4:57 SA

Rất hữu ích !

0
thg 11 19, 2020 4:44 SA

cũng kỳ công dịch, cơ mà thỉnh thoảng sai lỗi chính tả 😁😁

h: trả về note ảo

cái này hẳn là node, chứ note chả hợp lý gì cả

+1
thg 11 19, 2020 4:32 SA

hay thì cũng hay cơ mà ko theo một đề mục nào cả :3 hi vọng chủ thớt chia ra theo từng chuyên đề, ví dụ như mẹo hay về query, mẹo hay với middleware, mẹo hay với collection chẳng hạn thì nó hợp lý hơn

Nếu như bạn đang có những cách làm hay thì đừng ngần ngại bổ sung dưới comment để mình cập nhật thêm và tham khảo bạn nha.

m.ng dễ bổ sung hơn 😁😁

+1
thg 11 19, 2020 3:38 SA

Hay quá bạn ơi :v

+1
thg 11 19, 2020 3:35 SA

auto save cũng hay cơ mà k nên dùng. lúc merge nhiều chỗ thay đổi không cần thiết. đặc biệt là dự án kiểu maintain

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí