THẢO LUẬN

Bài viết rất hay. Cảm ơn bạn 👍

0
thg 12 29, 2019 4:35 SA

Cám ơn Huy đã chia sẻ nhé 😄

0
thg 12 29, 2019 4:06 SA

Dear Đức,

  • Cảm ơn Đức mình đã làm xong. Nguyên nhân do 2 vấn đề, mình share lại cho các babie docker ( Professional bỏ qua nghen 😄) Vấn đề 1 : Trong file app.py mình chưa khai báo port =os.environ['PORT'] Vấn đề 2 : Đã khai báo trong app.py nhưng trong docker-compose.yml thì khai báo sai key với app.py ( mình để ports thay vì PORT) 2.png1.png

  • Các bạn nhớ lưu ý chỗ này kẻo dính bug như mình 😄 😄 😄

Cảm ơn Đức nhiều và ngón series CI/CD sớm 😍

0

@huy_nguyen Cám ơn Huy đã theo dõi nhé, mình sẽ viết về CICD sớm nhé 😉

0
thg 12 29, 2019 2:09 SA

Chào Huy,

MÌnh đã check lại trong bài và thấy mọi thứ vẫn ok nhé.

Vấn đề do bên trong container của Huy vẫn là port 5000 thì bạn check lại những chỗ sau cho mình nhé:

  • Check lại Dockerfile xem còn đoạn ENV PORT... thì xoá đi nhé.
  • Check file app.py nhớ là đoạn cuối phải thế này nhé app.run(host="0.0.0.0", port=os.environ['PORT'])
  • Check lại file .env xem biến PORT đã là 8888 hay chưa
  • Check lại file docker-compose.yml xem đã có trường environment với PORT: ${PORT} hay chưa nhé.

Nếu vẫn còn lỗi thì bạn so sánh lại với full source code bài này từ đầu đến cuối mình để ở đây nhé 😃 (nhánh complete-tutorial)

0
thg 12 29, 2019 12:46 SA

dear Đức,

  • Mình hiểu rồi, cơ mà không biết file env mình có sai không mà nó cứ lấy port 5000 là internal. Port 9999 là public ok. Nhưng port inyernal vẫn là 5000 chứ không phải là 888
0
thg 12 28, 2019 10:11 CH

Chào Huy,

Sau khi sửa file .env thì bạn cần restart lại project bằng cách chạy docker-compose down và up.

Trong bài mình cũng có giải thích là ta chỉ việc tạo file .env còn docker-compose sẽ tự động đọc ở cùng thư mục và tìm bạn à, ta không vần mock vào nhé 😄. Để mình sửa lại đoạn đó cho rõ ràng hơn nhé 😉

0
thg 12 28, 2019 5:57 CH

Dear Đức,

  • Bạn giúp mình clear chỗ tạo file .env nhé. Mình tạo xong chạy trên public port = 9999 và private port = 8888. Nhưng khi up lên thì mình thấy vẫn chạy port 5000.
  • Mình không thấy chỗ nào có cấu hình móc .env vào hết ( Dockerfile và docker-compose.yml)

P/s Mình mò mẫm mới bước vào docker, mong bạn thông cảm nhé.

Cảm ơn Đức. 😄

0

Cảm ơn bạn nhé!

0

Dear Đức,

  • Tranh thủ ra series về CI/CD nhé Đức. Cảm ơn bạn đã share kiến thức tới mọi người.
+1
thg 12 28, 2019 10:24 SA

Lol có nói app dụng gì về rest API đâu toàn dùng default của react , ít nhất bạn cũng phải đưa ra so sánh tính ra milisecond khi ko dùng rest, dùng rest như nào chứ Ex: cho 1 cái json rùi đọc ra là ko đúng rùi , bạn phải đó dc lúc call từ ứng dụng cùng tốc độ mạng thì nó call lên cùng 1 API như nào

0
thg 12 28, 2019 10:17 SA

Cám ơn bạn đã theo dõi blog của mình,

Mình sẽ cố gắng chia sẻ nhiều nhất có thể với các bạn nhé 😉

0
thg 12 28, 2019 10:12 SA

Mình khẳng định lại là webserver không cần EXPOSE để có thể map được port như bạn nói nhé.

Mình không biết bạn dùng port 443 hay port bao nhiêu, mình đã làm demo sẵn cho bạn. Chứng minh cụ thể cho bạn, document chính thức của Docker cũng nói như vậy, nhưng 1 mình bạn vẫn khẳng định như vậy thì mình cũng không còn gì để comment. (Chả lẽ mình lại phải làm tiếp 1 demo map port 443 không cần EXPOSE cho bạn xem nữa hay sao?)

Nếu bạn vẫn khẳng định là cần thì tại sao các bài trước mình chạy project NodeJS chẳng hạn mình đâu có cần EXPOSE cổng 3000 vẫn map và chạy bình thường đó bạn ???

Hoặc có thể do mình không hiểu hết được ý của bạn, dù như vậy thì mình nghĩ cũng nên dừng việc tranh luận này ở đây! Sau comment này mình sẽ không còn ý kiến gì nữa

Cám ơn bạn đã góp ý 😃

0
thg 12 28, 2019 9:05 SA

Dear Chung,

  • Đã thẩm thấu được vì sao mình copy node_modules vào thì chạy ok 😄. Cảm ơn bạn đã có những bài viết hữu ích cho những ai đang tìm hiểu Docker. Hy vọng bạn có nhiều bài viết hơn nữa đễ cho những người như mình LOVE docker nhiều nhiều hơn nữa bạn nhé.
  • Thật tuyệt với nếu bạn có một project Docker về HAProxy nhé 😄:D mình đang làm về nó mà chưa thông 💯💯💯💯💯💯
0
thg 12 28, 2019 9:02 SA

mình thử thì thấy sau khi dùng option -p 443:443 truy cập vào nginx vẫn được, cái này mình sai. Vì option publish sẽ thực hiện expose ẩn nếu trong dockerfile chưa expose, và vì thế nên bạn cũng sai khi khẳng định webserver không cần expose, vì nó đã không listen port đó thì forward port vào cũng chẳng được gì.

Bạn có thể xem ở đây (phần ps), vì nó không có trong doc https://stackoverflow.com/a/22150099 Nếu đúng như doc viết thì -p chỉ thực hiện forward port, nên đừng lôi mấy dòng tiếng anh đọc không hiểu ra

Còn tranh luận bình thường bạn đừng lôi giọng đó vào, mình đọc thấy chán luôn, cũng chẳng muốn tranh luận với bạn tại sao vendor trong container sẽ không bị mất nữa.

0
thg 12 28, 2019 7:38 SA

Chào Huy,

Sorry bạn mình viết thiếu một bước, không biết sao lúc viết bài đầu óc mình lại thế nào 😄

Mình đã sửa lại trong bài mục Chạy Project, bạn có thể đọc lí do ở đó nhé

Cách fix nhanh cho bạn, bạn chạy command sau là được nhé:

docker run --rm -v $(pwd):/app -w /app node npm install

Sau đó khởi động lại project bằng cách chạy docker-compose down/up

Hi vọng giúp được bạn 😃

0
thg 12 28, 2019 7:23 SA

Chào bạn,

Vấn đề của bạn là thế này:

  • Mặc dù bạn đã chạy npm install ở Dockerfile, nhưng vì khi chạy ở file docker-compose.yml bạn lại mount volume từ folder ngoài vào trong, nên toàn bộ các file ở đường dẫn /app trong container lúc chạy sẽ bị thay thế bởi các file ở foldẻ ngoài của bạn
  • Nhưng ở folder ngoài của bạn thì lại không hề có node_modules

Vậy cách giải quyết vấn đề này là gì?

Bạn chỉ cần comment bỏ dòng mount volumes ở file docker-compose là chạy được, nhưng vì bạn cần phải có đoạn mount volumes đó để có thể sửa code ở bên ngoài bên trong thay đổi trực tiếp.

Nên vậy cách giải quyết cuối cùng cho trường hợp của bạn để khi người khác lấy project của bạn và có thể chạy được là:

  • Ở folder bên ngoài bạn chạy cho mình command sau:
docker run --rm -v $(pwd):/app -w /app node npm install
  • Command trên sẽ tạo trực tiếp folder node_modules ở môi trường ngoài dùng 1 container tạm thời
  • Sau đó chạy docker-compose up là chạy bình thường nhé

Hi vọng có thể giúp được bạn

0
thg 12 28, 2019 6:43 SA

mình mới phát hiện ra vấn đề là file .htaccess này không hoạt động được trên nginx chính xác hơn đó là " Nginx does not support .htaccess files. " 😦

0
thg 12 28, 2019 6:22 SA

Dear Chung,

  • Cho mình hỏi khi mình lấy về làm step by step thì khi docker-compose up, cái app nó báo lỗi và exit luôn. Log báo là không tìm thấy nodemon 11.png
  • Có liên quan gì tới npm install trong Dockerfile không nhé. Vì khi chạy mình không thấy sinh ra node_modules.

Cảm ơn Chung

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í