THẢO LUẬN

thg 12 28, 2019 3:22 SA

Screen Shot 2019-12-28 at 10.16.45.png

E thử build rồi up lên nhưng truy cập không được ạ. E chạy trên host 192.168.99.105

Screen Shot 2019-12-28 at 10.44.02.png

+1

hay quá bạn ơi!!

0
thg 12 27, 2019 4:57 CH

😍 hay quá. Thanks bác

0
thg 12 27, 2019 12:28 CH

Combinelatest chứ k có combinelastest nha bạn.

0
thg 12 27, 2019 12:16 CH

Mình đã nghĩ đoạn document từ trang chủ của Docker đã làm bạn hiểu nhưng vì bạn vẫn khăng khăng nên mình đã tự tay trực tiếp build lại Image từ trang cung cấp docker image official. Image của mình ở đây https://gist.github.com/maitrungduc1410/7487cf5eff7a2595921aca2c4b240267. Ở image này mình KHÔNG CẦN EXPOSE cổng 80 vẫn có thể map port từ bên ngoài và chạy bình thường nhé

Còn việc bạn không chạy được ở cổng 443, khá nhiều lí do có thể gây ra lỗi (ở localhost thì không có HTTPS, hoặc khi bạn deploy ở VPS nhưng certificate của bạn ko hợp lệ chẳng hạn,...), nên ngay cả khi bạn expose và thậm chí map cả port cũng không chạy được.

Về câu hỏi thứ nhất này của bạn nếu sau khi mình đã giải thích và làm hẳn demo cho bạn nhưng bạn vẫn bảo vệ quan điểm của mình thì mình xin được không tranh luận về điều này nữa!

Còn câu thứ 2, trong bài câu đó ở phần câu hỏi liên quan tới những gì mình làm trong bài, mọi thứ vẫn chạy bình thường ổn định, mình vẫn dùng cách đó và phần đó mình cũng đã nói rõ là ở trong bài này , một phần mềm có hàng tỉ cách tiếp cận, mình không thể nói hết được từng cách, còn vì trong bài mình mount từ môi trường gốc vào cả image Laravel và image Nginx do đó mình khuyên bạn đọc không nên chạy composer vì khi chạy thì folder vendor sẽ bị mất do môi trường ngoài không có.

Và cả sau câu 2 này nếu vẫn chưa làm bạn hài lòng thì mình cũng xin không tranh luận dài dòng nữa 😃

0
thg 12 27, 2019 10:50 SA
  • bạn hãy xem ở đây https://github.com/nginxinc/docker-nginx, nó đã expose sẵn port 80, còn bạn muốn check điều mình nois không thể map port nếu không expose thì bạn thử map port 443:443 mà không expose trong dockerfile xem, dùng docker cli nhé đừng dùng ports của docker-compose vì nó expose và mapping trong cùng khai báo đó.
  • cái thứ 2 mình muốn chỉ ra là việc bạn nói không nên chạy composer install trong dockerfile là sai, mình vẫn đang dùng và ENTRYPOINT sinh ra để làm việc như thế, build container bằng câu lệnh, và nó sẽ chạy sau khi mount volume hoàn thành.

Check lại nhé !

+1
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 12 27, 2019 10:48 SA

tks bạn, để tối về mình check lại nhé

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 12 27, 2019 9:57 SA

Trước em cũng gặp trường hợp này rồi nên em biết bác ạ =))

0

cho mình hỏi công thức tính p của hackernew như nào nhỉ? TH upvote=0 và downvote=0 thì sẽ tính như nào? Thanks all

0
thg 12 27, 2019 7:27 SA

1 like cho chủ thớt 😄

0
Avatar
đã bình luận cho bài viết
thg 12 27, 2019 7:13 SA

cảm ơn bạn đã đọc. mình cũng mới tìm hiểu về thằng này 😂😂

+1
Avatar
đã bình luận cho bài viết
thg 12 27, 2019 7:12 SA

bài viết hay qúa bạn, mình đau đầu vì nó mấy ngày nay 👍😀😘😍😆😜😅😂😱

+1
thg 12 27, 2019 7:00 SA

mình vừa sửa lại comment bạn check lại nhé (chú ý câu 1)

0
thg 12 27, 2019 7:00 SA
  • cái đầu tiên bạn check lại trong image của docker trên github đó, nó sẽ có expose sẵn rồi
  • cái thứ 2 mình nói không được ý là bảo nó install xong rồi bị replace như bạn nói đó, bạn đọc kỹ lại comment của mình, bạn có thể đọc thêm về thứ tự chạy khi mà 1 container được build, sự khác nhau của RUN, ENTRYPOINT và CMD.
0
thg 12 27, 2019 6:47 SA

Cám ơn bạn đã làm rõ hơn cho mình và bạn đọc nhé 😃

  • Câu này bạn đã có sự nhầm lẫn nhé, nguyên văn từ document của Docker The EXPOSE instruction informs Docker that the container listens on the specified network ports at runtime. EXPOSE does not make the ports of the container accessible to the host.. Và đây là giải thích đơn giản hơn của câu trên nhé The EXPOSE instruction exposes the specified port and makes it available only for inter-container communication (tức: EXPOSE sẽ mở ra một port và làm nó có sẵn cho việc giao tiếp giữa các container nhé bạn). Đó là lí do vì sao các bài trước (ví dụ bài dockerize NodeJS mình đâu có cần expose port 3000 vẫn có thể map được đó thôi bạn)

  • Còn điều thứ 2 thì bạn hoàn toàn có thể chạy composer install trong lúc build image nhé, mình cũng đã từng chạy bình thường (trường hợp đó mình có cả nginx và php-fpm chung trong cả image). Check lại nhé bạn!

0
thg 12 27, 2019 5:49 SA

bài viết rất hay nhưng trong bài của bạn mình thấy có 2 điều sai:

  • webserver không cần expose vì chẳng có ai gọi đến nó cả cái này là sai lầm nhé, nó vẫn cần expose, expose xong rồi mới map được docker host bên ngoài với container host bên trong. Bạn có thể xem lại trong official image.
  • Tại sao không chạy composer install ngay lúc build image?. Bạn chạy composer install không được bởi lệnh RUN built on top của container, trước việc mount volume hoàn thành, nếu chạy lệnh đó trong ENTRYPOINT thì không sao cả, vì entrypoint sẽ được chạy sau khi mount, và khi vendor được tạo ra trong container, nhờ cơ chế sync của docker nó sẽ được đồng bộ với folder của docker host.
-2
thg 12 27, 2019 4:51 SA

Viết gọn lại cho ai cần:

const quickSort = array => {
  if( array.length < 2 ) return array;
  const [pivot, ...another] = array
  return [...quickSort(another.filter(i => i < pivot)), pivot, ...quickSort(another.filter(i => i > pivot))]
}
+2
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í