Build nền tảng cho Docker Container như thế nào cho hợp lý :-?
Mình đang thử tự build 1 con Docker cho ứng dụng web laravel-nginx-php-fpm-sql và có tham khảo qua repo này: FramgiaDockerTeam.
Mình đang thấy workspace được build dựa trên ubuntu:16.04.
Mình có thắc mắc là tại sao không build workspace trên nền của alpine (nhẹ hơn 3.8MB so với 118MB của ubuntu:16.04). Rõ ràng là alpine nhẹ và nhanh hơn rất nhiều so với Ubuntu. (Nếu ko tin có thể xem ở đây so sánh ).
Đọc qua ReadMe của team thấy có nói là build dựa theo laradock, mình có tìm hiểu cũng thấy workspace của laradock cũng build trên nền ubuntu (thậm chí là 18:04). Không biết mọi người có thể giải thích giúp mình được ko ạ (boiroi).
2 CÂU TRẢ LỜI
Bạn nói đúng rồi đấy bạn. Mình cũng không biết là lý do gì. Cá nhân mình suy đoán như sau:
- Có thể là do hồi đấy (3 năm trước), repo này được dùng nhằm phục vụ việc trainning và chia sẻ kiến thức về docker, vì khi đó có thể Docker ở Framgia có thể còn khá mới lạ và ít project sử dụng. Để ubuntu nó thân quen sẽ dễ hình dung hơn.
- Có thể do team trong Framgia thích dùng ubuntu nên tác giả đã base trên ubuntu luôn chẳng hạn. Vì thói quen của tác giả lúc đấy đang quen code trên ubuntu, khi viết Dockerfile thì các lệnh setup như cài đặt phần mềm sẽ không bị thay đổi nên dễ/tiện setup hơn. VD:
# Ubuntu
apt-get install git
# Alpine
apk add git
- Ngoài ra, repository kia đã lâu rồi không còn thấy được contribute nên có thể tác giả cũng quên luôn việc optimize nó.
Em thì lại đang nghĩ là nền tảng kia package ko hỗ trợ đủ nhiều nên dùng ubuntu để add extendsion cho tiện =)) nhưng cũng không chắc lí do có phải vậy ko vì em thấy laradock cũng đang build workspace của họ như vậy :-?
@Naem Đó cũng có thể là một lý do, nhưng mình thấy với laravel workspace thì alpine cũng không thiếu gì. Chắc chủ yếu là do thói quen.
@Naem Thực sự thì về lý do thì giống hệt như những gì @huukimit trả lời ở trên em ạ
Hồi đó mới dừng ở mức tìm hiểu, nghiên cứu ứng dụng Docker trong project, cũng như để áp dụng vào xây dựng hệ thống CI, nên chưa tính toán được nhiều, đơn giản vì Ubuntu là thân thuộc, và dễ dùng hơn với mọi người thôi Việc dùng alpine, centos có thể sẽ gây khó khăn cho cho các thành viên của các project khác trong việc sử dụng (khi mà mọi người hầu hết toàn dùng Ubuntu), bởi trong quá trình phát triển sản phẩm, mọi người sẽ cần phải vào trong container debug nhiều mà
@thangtd90 @huukimit em cảm ơn 2 anh ạ (bow)
Có thể đơn giản là FramgiaDockerTeam thích dùng Ubuntu thôi .
Đúng là alpine nhẹ hơn thật nhưng có 1 cái cần lưu ý là alpine dùng musl chứ không phải glibc như Ubuntu nên binary compile sẵn cho Ubuntu sẽ không chạy được trên alpine. Nếu bạn dùng PHP thì ví dụ có 1 cái package cũng hơi nổi là h4cc/wkhtmltopdf-amd64 chứa file binary cho debian và alpine thì sẽ không chạy được.
Nếu bạn thích alpine và không có vấn đề gì như trên thì có thể dùng repo docker-php-development xem. Còn nếu bạn muốn nhẹ mà vẫn dùng được binary như trên thì có thể dùng image dựa trên debian. Nếu dùng repo này thì chỉ cần đổi image php từ viblo/php:fpm
thành viblo/php:fpm-stretch
là được.
Không biết các anh viết xong đã build thử chưa, e thì chưa nhưng em đọc qua thì thấy docker-php-development viết có vẻ hơi sai sai hay là do em chưa hiểu rõ : php.yml file em thấy build dựa trên image abiosoft/caddy:no-stats thằng này ko thấy cái thêm extension gì cho php cả (em thấy phải abiosoft/caddy/php mới có cài cho php) hay nó chồng config ở đâu mà em chưa nhìn ra nhỉ :-?