Không cần nhé bạn, cả series này thứ duy nhất bạn càn cài là Docker và Docker compose, command kia dùng container tạm thời có nodejs để chạy npm nhé bạn. Bạn đọc ở trong bài mình có giải thích nhé bạn
E truy cập 192.168.99.105:8000 đó a (e đang xài docker-machine vs virtualbox). Có bạn phía dưới lỗi tương tự, nếu rảnh a build lại cái dockerzie này xem có vấn đề gì không ạ. E cảm ơn.
Cho mình hỏi là khi run command
docker run --rm -v $(pwd):/app -w /app node:13-alpine npm install && npm run build
tức là ở local phải cài npm đúng không bạn?
Hay đó bác, hiểu về bản chất của vấn đề bao giờ cũng thú vị cả. Thiết nghĩ bác nên làm thêm bài về các thứ có sẵn trong các framework, library như Bootstrap, Material UI, Ant-design,... mà rất hay được sử dụng trên web như thằng Carousel này để giúp ae nâng cao thêm trình độ.
Anyhow, cảm ơn công sức của bá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)
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
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é
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é.
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
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
Đã 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
THẢO LUẬN
Không cần nhé bạn, cả series này thứ duy nhất bạn càn cài là Docker và Docker compose, command kia dùng container tạm thời có nodejs để chạy npm nhé bạn. Bạn đọc ở trong bài mình có giải thích nhé bạn
E truy cập 192.168.99.105:8000 đó a (e đang xài docker-machine vs virtualbox). Có bạn phía dưới lỗi tương tự, nếu rảnh a build lại cái dockerzie này xem có vấn đề gì không ạ. E cảm ơn.
Mình đã thử chạy ở localhost và cũng gặp lỗi như bạn ở trên
(
Cho mình hỏi là khi run command docker run --rm -v $(pwd):/app -w /app node:13-alpine npm install && npm run build tức là ở local phải cài npm đúng không bạn?
Hay đó bác, hiểu về bản chất của vấn đề bao giờ cũng thú vị cả. Thiết nghĩ bác nên làm thêm bài về các thứ có sẵn trong các framework, library như Bootstrap, Material UI, Ant-design,... mà rất hay được sử dụng trên web như thằng Carousel này để giúp ae nâng cao thêm trình độ. Anyhow, cảm ơn công sức của bác.
Bài viết rất hay. Cảm ơn bạn
Cám ơn Huy đã chia sẻ nhé
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)


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
@huy_nguyen Cám ơn Huy đã theo dõi nhé, mình sẽ viết về CICD sớm nhé
oke e nhé,
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é:
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)
dear Đức,
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é 
Dear Đức,
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.
Cảm ơn bạn nhé!
Dear Đức,
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
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é
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 ý
Dear Chung,