@hoangminhhuet
cái đó chắc bạn cũng biết rồi cậu ơi, cái bạn kia hỏi và có thể thêm điều điện bổ sung như "!=" hoặc là where in cơ. attempt chỉ nhận về mảng và nó sẽ so sánh bằng hết c ạ.
chắc chỉ còn cách của @phuongth thôi
bản chất là thông qua thằng ReflectionClass gọi đến thằng ReflectionMethod dùng để set method accessibility rồi có thể gọi được cả các method protected và private thui bạn . Bạn có thể xem 1 ví dụ khác phía dưới:
<?php
class Foo {
private function myPrivateMethod() {
return 7;
}
}
$method = new ReflectionMethod('Foo', 'myPrivateMethod');
$method->setAccessible(true);
echo $method->invoke(new Foo);
// echos "7"
?>
Mình cũng ko có thời gian cài hẳn Gitlab Runner vào máy nên ko test trực tiếp đc.
=> Vậy tức là bạn đang chạy shared gitlab-runner của gitlab. Vậy thì bạn không bị lỗi là bình thường, vì mình chạy cũng không bị lỗi. Do runner của gitlab chắc chắn là khác runner tự build.
Lỗi này mình đã thử đã thử "cố tình" setup để permission
=> bạn nói đúng rồi đó. Lỗi khi sai permission. Ví dụ này bạn đang dùng user 1000:1000. Nhưng ở bài non root trước bạn dùng user 1410:1410. Vậy bạn nghĩ sao khi đổi lại là dùng user này cho service app và db. Chắc chắn sẽ lỗi.
Ở đây bạn dùng relative path cũng được, mình không nói là phải dùng absolute path. Nhưng bạn phải biết relative path này tương ứng với absolute path của bạn ở đâu trong runner, và trước khi chạy job, bạn phải set perrmission cho nó để user trong service app và db có quyền truy cập đến.
Còn bạn nói:
Đoạn mình thắc mình thấy chỉ là "ko hiểu" tại sao Gitlab runner lại tự biết mà đổi quyền về luôn cho mình thôi
Là hoàn toàn sai trong trường hợp bạn dùng gitlab-runner tự build (không phải shared gitlab-runner của gitlab)
@thungrac43 Detail permission mình đã in ra bạn có thể xem chi tiết ở job của CICD.
Về vấn đề này mình ko thấy có lí do gì mà "buộc" phải dùng đường dẫn tương đối hay tuyệt đối ở môi trường ngoài như bạn đề cập. Và như bạn cũng thấy demo của mình chạy CICD ngon với đường dẫn tương đối.
Đoạn mình thắc mình thấy chỉ là "ko hiểu" tại sao Gitlab runner lại tự biết mà đổi quyền về luôn cho mình thôi, bình thường nó sẽ báo lỗi (đây ko báo lỗi thì hay quá luôn)
Mình cũng đã thử chạy lại với việc uncomment dòng set perrmission
Nếu bạn làm thế và bị lỗi Attempted to create a lock file on a read-only directory: /data/db thì chứng tỏ là folder .docker/data/db ở môi trường ngoài vẫn có quyền khác với user trong container MongoDB trước lúc bạn chạy docker-compose up. Lỗi này mình đã thử đã thử "cố tình" setup theo kịch bản đó thì cho ra kết quả y hệt nên mình có thể khẳng định như vậy.
Bạn có thể clone y nguyên project của mình về và đưa vào Gitlab Runner của riêng bạn, trong project của mình đã có tất cả mọi thứ để bạn xem, đã chạy thành công, log job đầy đủ, bạn cứ việc tham chiếu sang, nếu có lỗi thì khả năng là Gitlab Runner của bạn ko giống Runner của Gitlab.com. Mình cũng ko có thời gian cài hẳn Gitlab Runner vào máy nên ko test trực tiếp đc, nhưng đấy, lý thuyết và thực tế mình đã làm mình đã giải thích ở comment này và các comment trước đó.
THẢO LUẬN
Bạn hiểu nhầm ý của mình rồi, nên mình sửa lại tiêu đề câu hỏi một chút. Vị trí chuộc khác với vị trí dấu nhắc đánh chữ. Xin lỗi.
lần này làm thật =))
không phải tiêu đề là "thử làm chức năng kết nối csdl" à =))
rất hay cám ơn bạn!
@sangcao1003 có cách nào để lưu token của sanctum vào Redis được không bạn, và hiện tại token của sanctum nó đang lưu ở trong database bạn nhỉ?
@hoangminhhuet cái đó chắc bạn cũng biết rồi cậu ơi, cái bạn kia hỏi và có thể thêm điều điện bổ sung như "!=" hoặc là where in cơ. attempt chỉ nhận về mảng và nó sẽ so sánh bằng hết c ạ.
chắc chỉ còn cách của @phuongth thôi
Laravel là gì cơ ạ ???
bản chất là thông qua thằng ReflectionClass gọi đến thằng ReflectionMethod dùng để set method accessibility rồi có thể gọi được cả các method protected và private thui bạn . Bạn có thể xem 1 ví dụ khác phía dưới:
Được anh ơiiii, để em tìm hiểu ạ
@kybh Làm tí format code cho nó đẹp em nhỉ?
@maitrungduc1410
=> Vậy tức là bạn đang chạy shared gitlab-runner của gitlab. Vậy thì bạn không bị lỗi là bình thường, vì mình chạy cũng không bị lỗi. Do runner của gitlab chắc chắn là khác runner tự build.
=> bạn nói đúng rồi đó. Lỗi khi sai permission. Ví dụ này bạn đang dùng user 1000:1000. Nhưng ở bài non root trước bạn dùng user 1410:1410. Vậy bạn nghĩ sao khi đổi lại là dùng user này cho service app và db. Chắc chắn sẽ lỗi.
Ở đây bạn dùng relative path cũng được, mình không nói là phải dùng absolute path. Nhưng bạn phải biết relative path này tương ứng với absolute path của bạn ở đâu trong runner, và trước khi chạy job, bạn phải set perrmission cho nó để user trong service app và db có quyền truy cập đến.
Còn bạn nói:
Là hoàn toàn sai trong trường hợp bạn dùng gitlab-runner tự build (không phải shared gitlab-runner của gitlab)
Đây là bài tập lớn mình làm cùng các bạn ở trường Đại học bạn nhé.
@thungrac43 Detail permission mình đã in ra bạn có thể xem chi tiết ở job của CICD.
Về vấn đề này mình ko thấy có lí do gì mà "buộc" phải dùng đường dẫn tương đối hay tuyệt đối ở môi trường ngoài như bạn đề cập. Và như bạn cũng thấy demo của mình chạy CICD ngon với đường dẫn tương đối.
Nếu bạn làm thế và bị lỗi
Attempted to create a lock file on a read-only directory: /data/dbthì chứng tỏ là folder.docker/data/dbở môi trường ngoài vẫn có quyền khác với user trong container MongoDB trước lúc bạn chạydocker-compose up. Lỗi này mình đã thử đã thử "cố tình" setup theo kịch bản đó thì cho ra kết quả y hệt nên mình có thể khẳng định như vậy.Bạn có thể clone y nguyên project của mình về và đưa vào Gitlab Runner của riêng bạn, trong project của mình đã có tất cả mọi thứ để bạn xem, đã chạy thành công, log job đầy đủ, bạn cứ việc tham chiếu sang, nếu có lỗi thì khả năng là Gitlab Runner của bạn ko giống Runner của Gitlab.com
. Mình cũng ko có thời gian cài hẳn Gitlab Runner vào máy nên ko test trực tiếp đc, nhưng đấy, lý thuyết và thực tế mình đã làm mình đã giải thích ở comment này và các comment trước đó.
hay và dễ hiểu giờ đã hiểu tại sao NodeJS là single-thread mà lại xử lý được concurency
Khi nào có bài 8 vậy sư phụ
tks a, bài viết còn nhiều sót thiếu mong được chỉ giáo (bantim)
Bài viết rất to và đẹp
Mình cũng đã thử chạy lại với việc uncomment dòng set perrmission
thì vẫn lỗi
Hay nè!
@tranhuuhien1990 thank bạn mình đã update lại nha