• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
  • Đời sống thường thức
    • Tất cả
    • Bí ẩn - Chuyện lạ
    • Câu chuyện Khoa học
    • Chăm sóc Nhà cửa
    • Chăm sóc Sức khỏe
    • Chụp ảnh - Quay phim
    • Cưới hỏi
    • Dịch vụ ngân hàng
    • Game - Trò chơi
    • Kỹ năng
    • Là gì?
    • Mẹo hay
    Ielts La Gi 640 1

    IELTS là gì? Những điều cần biết về IELTS

    Cài font chữ

    Kẻ ô ly vuông trong Word và in ô ly Word

    Vivo Y33s

    3 cách chụp ảnh đẹp trên Vivo Y33s với nhiều hiệu ứng, filter độc đáo

    cách xem tin nhắn đã thu hồi trên messenger trên điện thoại

    Cách xem tin nhắn đã thu hồi trên Messenger cho điện thoại Android

    Cách hẹn giờ gửi tin nhắn chúc mừng

    Cách hẹn giờ gửi tin nhắn chúc mừng trên điện thoại vào dịp đặc biệt

    cách nhập code Play Together

    Nhập Full Code Play Together MỚI NHẤT hôm nay nhận quà khủng 2022

    • Bí ẩn – Chuyện lạ
    • Câu chuyện Khoa học
    • Chăm sóc Nhà cửa
    • Chăm sóc Sức khỏe
    • Chụp ảnh – Quay phim
    • Cưới hỏi
    • Dịch vụ ngân hàng
    • Game – Trò chơi
    • Kỹ năng
  • Nhịp sống công nghệ
    • Tất cả
    • Ảnh đẹp Khoa học
    • Anh tài công nghệ
    • Ảnh, đồ họa
    • Bình luận công nghệ
    • Chuyện công nghệ
    • Công nghệ
    • Công nghệ mới
    • Dịch vụ công trực tuyến
    • Dịch vụ nhà mạng
    Cuoc Thi Bao Mat 700 1

    Hai chuyên gia bảo mật Việt Nam giành giải thưởng 40.000 USD trong cuộc thi tấn công mạng Pwn2Own 2021

    He Tri Thuc Viet So Hoa 650 1

    Trải nghiệm sử dụng itrithuc.vn – dự án hệ tri thức Việt được số hóa đầu tiên

    Viettel Kiem Tra Thong Tin Thue Bao 700 1

    Kiểm tra thông tin thuê bao Viettel như thế nào?

    Hang Dien Thoai Lon Nhat 640 1

    Danh sách những hãng smartphone lớn nhất thế giới (cập nhật liên tục)

    Ai Gpt 3 Cua Elon Musk Vua Viet Ca Mot Bai Xa Luan Gay Chan Dong Tren Bao Anh 640 1

    AI viết bài xã luận gây chấn động trên báo Anh, tuyên bố sẽ không hủy diệt loài người

    V120 Viettel Dang Ky 640 1

    Cách đăng ký gói V120 Viettel

    Youtube Da Ra Doi Nhu The Nao Doi Net Ve De Che Youtube640 1

    YouTube đã ra đời như thế nào? Đôi nét về ‘đề chế’ YouTube

    Apple Ung Dung Nhan Dien Airtag Tren Android700 1

    Apple phát hành ứng dụng nhận diện AirTag trên Android

    He Dieu Hanh Se Khong Con Co The Su Dung Whatsapp640 1

    Đây là những hệ điều hành không thể tải WhatsApp trong thời gian tới

Không có kết quả
Xem tất cả kết quả
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
  • Đời sống thường thức
    • Tất cả
    • Bí ẩn - Chuyện lạ
    • Câu chuyện Khoa học
    • Chăm sóc Nhà cửa
    • Chăm sóc Sức khỏe
    • Chụp ảnh - Quay phim
    • Cưới hỏi
    • Dịch vụ ngân hàng
    • Game - Trò chơi
    • Kỹ năng
    • Là gì?
    • Mẹo hay
    Ielts La Gi 640 1

    IELTS là gì? Những điều cần biết về IELTS

    Cài font chữ

    Kẻ ô ly vuông trong Word và in ô ly Word

    Vivo Y33s

    3 cách chụp ảnh đẹp trên Vivo Y33s với nhiều hiệu ứng, filter độc đáo

    cách xem tin nhắn đã thu hồi trên messenger trên điện thoại

    Cách xem tin nhắn đã thu hồi trên Messenger cho điện thoại Android

    Cách hẹn giờ gửi tin nhắn chúc mừng

    Cách hẹn giờ gửi tin nhắn chúc mừng trên điện thoại vào dịp đặc biệt

    cách nhập code Play Together

    Nhập Full Code Play Together MỚI NHẤT hôm nay nhận quà khủng 2022

    • Bí ẩn – Chuyện lạ
    • Câu chuyện Khoa học
    • Chăm sóc Nhà cửa
    • Chăm sóc Sức khỏe
    • Chụp ảnh – Quay phim
    • Cưới hỏi
    • Dịch vụ ngân hàng
    • Game – Trò chơi
    • Kỹ năng
  • Nhịp sống công nghệ
    • Tất cả
    • Ảnh đẹp Khoa học
    • Anh tài công nghệ
    • Ảnh, đồ họa
    • Bình luận công nghệ
    • Chuyện công nghệ
    • Công nghệ
    • Công nghệ mới
    • Dịch vụ công trực tuyến
    • Dịch vụ nhà mạng
    Cuoc Thi Bao Mat 700 1

    Hai chuyên gia bảo mật Việt Nam giành giải thưởng 40.000 USD trong cuộc thi tấn công mạng Pwn2Own 2021

    He Tri Thuc Viet So Hoa 650 1

    Trải nghiệm sử dụng itrithuc.vn – dự án hệ tri thức Việt được số hóa đầu tiên

    Viettel Kiem Tra Thong Tin Thue Bao 700 1

    Kiểm tra thông tin thuê bao Viettel như thế nào?

    Hang Dien Thoai Lon Nhat 640 1

    Danh sách những hãng smartphone lớn nhất thế giới (cập nhật liên tục)

    Ai Gpt 3 Cua Elon Musk Vua Viet Ca Mot Bai Xa Luan Gay Chan Dong Tren Bao Anh 640 1

    AI viết bài xã luận gây chấn động trên báo Anh, tuyên bố sẽ không hủy diệt loài người

    V120 Viettel Dang Ky 640 1

    Cách đăng ký gói V120 Viettel

    Youtube Da Ra Doi Nhu The Nao Doi Net Ve De Che Youtube640 1

    YouTube đã ra đời như thế nào? Đôi nét về ‘đề chế’ YouTube

    Apple Ung Dung Nhan Dien Airtag Tren Android700 1

    Apple phát hành ứng dụng nhận diện AirTag trên Android

    He Dieu Hanh Se Khong Con Co The Su Dung Whatsapp640 1

    Đây là những hệ điều hành không thể tải WhatsApp trong thời gian tới

Không có kết quả
Xem tất cả kết quả
NQ NEWS
Không có kết quả
Xem tất cả kết quả
Trang chủ Quản trị hệ thống

Hành trình cùng cá voi xanh (Dockerize App)

@admiz bởi @admiz
03/05/2021
trong Quản trị hệ thống
0
Hành Trình Cùng Cá Voi Xanh (dockerize App) 60902c26c0100.jpeg

Nội dung

  • 1 Mục đích của Dockerize app
  • 2 Mô hình Dockerize app
  • 3 Chuẩn bị Dockerfile
  • 4 Chuẩn bị Docker Network

Mục đích của Dockerize app

Docker hiện tại là một công nghệ không phải mới nhưng vẫn rất nổi hiện nay. Hôm nay mình sẽ thử Dockerize một ứng dụng nho nhỏ gồm Nginx làm Proxy và Python app.

Mô hình Dockerize app

Mô hình mình dựa theo Tutorial này của Digital Ocean:https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04.

Ngắn gọn thì:

Nginx đóng vai trò Reverse Proxy thông qua Wsgi Protocol giao tiếp với Backend App là một Python Web viết bằng Flask. Python Web này chỉ làm mỗi nhiệm vụ trả lời mọi Request bằng một Response “Hello there”.

Trong bài Tut của Digital Ocean sử dụng Virtualenv để tạo môi trường độc lâp giữa các Python App nhưng do mình áp dụng Docker vào nên sẽ không cần cài đặt Virtualenv nữa.

Theo Best Practice, mỗi Container của Docker chỉ nên chứa một Service. Do đó, chúng ta sẽ có hai Container: 1 cho Nginx Reverse Proxy, 2 cho Backend Python Flask app. Tất cả Container này đều chạy chung một Host.

Thư mục chứa code và các file config, mình host trên:

{{unknown

trong thư mục app/simple_flask.

Chuẩn bị Dockerfile

Dockerfile sẽ chứa các chỉ thị mà từ đó chúng ta build ra một Docker image.

FROM centos:latest

RUN yum -y install epel-release

&& yum -y install python34 python-pip python-devel gcc gcc-c

&& pip install –upgrade pip

&& pip install flask uwsgi

COPY ./ /simple_flask

WORKDIR /simple_flask

CMD [“uwsgi”, “–ini”, “wsgi.ini”]

FROM là keyword bắt buộc có, cho biết docker image này sẽ base trên mọt bản centos image. Tốt nhất bạn nên base trên official docker image. Nếu không đánh tag thì mặc định docker hiểu bạn dùng latest version. Nếu không có official docker image nào ưng ý trên docker hub thì bạn nên chọn các image có kèm Dockerfile để biết rõ tác gỉa cài đặt copy cái gì vào đâu trong image. Trong Dockerfile chỉ có duy nhất một chỉ thị FROM.

RUN là chỉ thị cho biết sẽ thực hiện lệnh nào khi build image. RUN thường dùng để chạy các command cài dependency packages. Vì mỗi một chỉ thị trong Dockerfile sẽ phát sinh một layer nên ở đây mình chain các command lại bằng && nhằm hạn chế bớt layer sẽ được tạo ra trong image khiến image nhỏ gọn hơn. Tuy vậy cách làm này lại không tận dụng được cơ chế cache của docker trong qúa trình build image. Mặc định, docker sẽ cache các layer lại nên khi re-build lại thì rất nhanh. Nhưng nếu chỉ có một command trong chuỗi command nối nhau kể trên bị thay đổi thì thì layer đó hiểu là bị thay đổi, docker sẽ chạy lại tất cả các command trong chỉ thị RUN và tất cả các chỉ thị ngay sau đó. Thực sự thì ít khi dependency packages của image thay đổi mà chỉ có phần file được copy vào mới hay thay đổi, nhưng phần này thì dung lượng rất nhỏ nên mình thấy các Dockerfile vẫn hay được viết theo kiểu chain command.

COPY là chỉ thị sẽ copy tất cả các file có trong thư mục hiện tại mà chứa Dockefile trên docker host ngoại trừ các file liệt kê trong .dockerignore Thư mục trên host chứa Dockerfile gọi là build context. Khi build toàn bộ các file/thư mục trong build context được send đến docker server. Nếu build context có một file nặng vài G mà không dùng đến trong image thì nó cũng bị send đến server khiến qúa trình build sẽ bị chậm lại ở bước send context. Đó là lý do một số người dùng .dockerignore để filter bớt các thư mục/file rác trong build context.

Ở đây, .dockerignore của mình gồm:

Dockerfile

README.md

simple_flask.conf

WORKDIR là chỉ thị cho biết khi chạy container thì thư mục nào là điểm khởi đầu

CMD là chỉ thị cho biết lệnh nào được chạy khi bật container. Do chỉ định WORKDIR rồi nên lệnh này sẽ được thực hiện tại /simple_flask trong container luôn. Lệnh này phải thực hiện ở chế độ foreground nếu không container sẽ bị thoát ra ngay lập tức. Để giữ cho container running thi có hai cách:

• Một là chạy process ở foreground

• Hai là chạy process ở background nhưng có tail -f log, dùng tail để giữ cho container tiếp tục running

Trong một Dockerfile chỉ có duy nhất một chỉ thị CMD

Chuẩn bị Docker Network

Mình sẽ cần một user-defined network để giúp các container nói chuyện với nhau dễ dàng.

Trên host đã cài sẵn docker engine, bạn chạy

docker network create my-net

Build image cho python app. Tại thư mục có chứa Dockerfile ( chính là build context ), bạn chạy:

docker build -t xavivn/simple_flask .

Dấu chấm cuối để chỉ thư mục hiện tại là build context. Tên image thường đặt theo chuẩn:

/:ên>ên>

Ở đây mình không khai báo version nên mặc định là latest

Run docker image xavivn/simple_flask

docker run -itd –net=my-net –name=simple_flask xavivn/simple_flask:latest

Lý do phải dùng –name và –net mình đã viết trong http://kipalog.com/posts/Cach-lien-ket-cac-container-lai-voi-nhau-trong-docker

Python app flask này dùng port uwsgi/8000 nhưng port này chỉ cần thiết truy cập từ web proxy nên bạn không cần map port ở đây

Run docker image nginx

docker run -itd –net=my-net –name=nginx -p 80:80 -v /app/simple_flask/nginx/simple_flask.conf:/etc/nginx/conf.d/simple_flask.conf nginx

Do container này sẽ trực tiếp phục vụ client nên cần phải map port 80 trên host với port 80 trong container qua tham số -p

Config của nginx thường hay thay đổi nên mình mount nó ra một file bên ngoài nằm trên host. File /etc/nginx/conf.d/simple_flask.conf trong container sẽ tham chiếu đến file /app/simple_flask/nginx/simple_flask.conf trên host.

Nói chung những file/thư mục nào thường thay đổi thì bạn nên mount ra ngoài. Trừ trường hợp code của web thì nên đóng gói luôn vào container để tiện vận chuyển và dễ dàng deploy ( áp dụng trong CI/CD, docker thường được dùng làm phương tiện vận chuyển môi trường do tính tinh gọn), dễ dàng scale. Khi cần thay đổi code ngay lập tức thì bạn có thể git pull về docker host rồi dùng docker cp ghi đè thư mục code trong container. Trong trường hợp backend db thì khó hơn chút vì datadir khá lớn, nhỏ cũng tầm 20-30G. Lượng data đó qúa lớn nhét vào container thì không được, build vừa lâu lại vừa khó vận chuyển phân phối. Cũng vì lý do này áp dụng docker ở tầng db rất hạn chế, việc scale db vẫn không khác gì so với trước đây. Nếu muốn áp dụng docker tầng db thì phần datadir cần được tách rời và host bằng công nghệ storage như glusterfs, ceph chẳng hạn nhưng giải pháp cho bọn này đòi hỏi nâng cấp hạ tầng network để đảm bảo performance. Cá nhân mình thấy docker áp dụng tốt để làm container cho tầng app, web thôi. Không có giải pháp nào bao trùm hết vấn đề.

Nội dung file này như sau:

upstream simple_flask_app {

server simple_flask:8000;

server {

listen 80;

server_name simple.flask.example.com;

location / {

include uwsgi_params;

uwsgi_pass simple_flask_app;

Chỉ là khai báo một vhost, container python app được tham chiếu qua tên container. Do file config tham chiếu đến container python app nên bạn phải chạy image xavivn/simple_flask trước.

VCCloud sưu tầm

Theo Digital Ocean

>> Tham khảo thêm: Sử dụng Docker thiết lập môi trường tạo Package RPM cho CentOS

Post Views: 39

Có thể bạn quan tâm bài viết

Quicktime Player Logo650 1
macOS

Cách ghép video trên macOS bằng QuickTime Player

26/12/2021
Kali Linux 2021 4 700 1
Linux

Kali Linux 2021.4: Thêm 9 công cụ mới và hỗ trợ tốt hơn cho Apple M1

26/12/2021
Openbsd La Gi 1
Linux

OpenBSD là gì? Đây là mọi thứ bạn cần biết về hệ điều hành này!

26/12/2021
Mac Os Xoa Ung Dung Cai Dat Logo640 1
macOS

Cách gỡ, xóa ứng dụng trên Mac OS

26/12/2021
Tim Thu Vien Anh Photos Library Tren May Mac700 1
macOS

Hướng dẫn tìm thư viện ảnh Photos Library trên máy Mac

26/12/2021
So Sanh Macbook Pro Macbook Air Va Ipad Pro 1
macOS

So sánh MacBook Pro 13 inch với MacBook Air và iPad Pro

26/12/2021

Bài mới nhất

Thiết Kế Website Game Online Sáng Tạo, ấn Tượng Tại Webbuilder (Bizcloud Website) 612d0a04d531d.jpeg

Thiết kế website game online sáng tạo, ấn tượng tại Webbuilder (Bizcloud Website)

05/02/2023
Thiết Kế Website Thực Phẩm Chức Năng Uy Tín, Chất Lượng, Chuẩn Seo 612d08d83a296.jpeg

Thiết kế website thực phẩm chức năng uy tín, chất lượng, chuẩn SEO

05/02/2023
Thiết Kế Website Trung Tâm Gia Sư Uy Tín, Chuyên Nghiệp Và Chất Lượng 612d0a0d7e501.jpeg

Thiết kế website trung tâm gia sư uy tín, chuyên nghiệp và chất lượng

04/02/2023
Thiết Kế Website Dịch Vụ Bảo Vệ, An Ninh Chuyên Nghiệp Và Giao Diện Hiện đại 612d098d4c595.png

Thiết kế website dịch vụ bảo vệ, an ninh chuyên nghiệp và giao diện hiện đại

04/02/2023
Thiết Kế Website Xuất Khẩu Lao động, đi Du Học Chuyên Nghiệp, Giá Rẻ 612d08e0cb2c2.jpeg

Thiết kế website xuất khẩu lao động, đi du học chuyên nghiệp, giá rẻ

03/02/2023

Categories

  • Android
  • Ảnh đẹp Khoa học
  • Anh tài công nghệ
  • Ảnh, đồ họa
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Bí ẩn – Chuyện lạ
  • Bình luận công nghệ
  • Câu chuyện Khoa học
  • Chăm sóc Nhà cửa
  • Chăm sóc Sức khỏe
  • Chụp ảnh – Quay phim
  • Chuyện công nghệ
  • Công nghệ
  • Công nghệ mới
  • Cưới hỏi
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ ngân hàng
  • Dịch vụ nhà mạng
  • DIY – Handmade
  • Đời sống thường thức
  • Game – Trò chơi
  • Giải pháp bảo mật
  • Giải trí
  • Giáng sinh – Noel
  • Giao tiếp, liên lạc, hẹn hò
  • Hệ thống
  • Hệ thống
  • Hỗ trợ học tập
  • Họp, học trực tuyến
  • Internet
  • iPhone
  • Khám phá khoa học
  • Khám phá thiên nhiên
  • Khoa học công nghệ
  • Khoa học Vũ trụ
  • Khoa học vui
  • Kiến thức bảo mật
  • Kiến thức căn bản
  • Kiến thức cơ bản
  • Kiến thức tổng hợp
  • Kinh nghiệm Du lịch
  • Kỹ năng
  • Là gì?
  • Làm đẹp
  • Lập trình
  • Linux
  • Linux OS
  • Lưu trữ đám mây
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • Máy công cụ
  • Máy hút mùi
  • Mẹo hay
  • Mẹo vặt
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Nhà thông minh
  • Phần cứng
  • Phần cứng
  • Phần Mềm
  • Phân phối
  • Quà tặng
  • Quản trị hệ thống
  • Quạt các loại
  • Quiz công nghệ
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tải game
  • Tấn công mạng
  • Tăng tốc máy tính
  • Tết 2022
  • Tết Trung thu
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Tivi
  • Trí tuệ nhân tạo (AI)
  • Tủ lạnh
  • Uncategorized
  • Ứng dụng
  • Ứng dụng văn phòng
  • Video Khoa học
  • Video, phim, nhạc
  • Website
  • Windows Server 2012

Tags

#app #chatbot #chatbot tự động #CRM #Email Marketing #Kiến thức cơ bản #Techblog #Thiết kế website Android apple cách chơi Pokémon Go Gmail Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền máy tính học css học python học SQL ios iphone iphone 12 Microsoft minecraft mssql MS SQL Server Pokémon Go PUBG Mobile python Raspberry Pi Samsung smartphone SQL Server thiết bị số tivi tài liệu python windows windows 10 YouTube điện thoại di động điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

Không có kết quả
Xem tất cả kết quả
  • Home

© 2022 Pha Le Solution

Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?