Docker-compose khởi động mùa xuân mysql
Docker Compose là một công cụ dùng để định nghĩa và chạy multi-container và liên kết chúng lại với nhau. Nó sử dụng tệp YAML để cấu hình các dịch vụ cần chạy cho ứng dụng của bạn. Ví dụ bạn cần xây dựng WordPress để thực thi thì sẽ cần hai vùng chứa là Cơ sở dữ liệu và vùng chứa WordPress. Khi đó chỉ cần cấu hình trong file config cả hai dịch vụ này Show Về cơ bản, việc thiết lập Docker Compose cho nhiều ứng dụng giống nhau, nó sẽ bao gồm các bước cơ bản sau
1. Cài đặt Đối với Windows 10, hiện tại đã có WSL2 nên các bạn chỉ cần cài đặt Docker Desktop trước, sau đó cài đặt WSL2 cho windows là có thể sử dụng một hệ điều hành Linux trên Windows rồi. 2. Cấu hình file config Tạo thư mục thực thi và tạo tệp docker-compose. yml to run tạo thư mục và tạo tệp docker-compose. ymlở bài này chúng ta cần hai container, là cơ sở dữ liệu và wordpress nên trong file docker-compose. yml chúng ta cấu hình như sau cấu hình file docker-compose. ymlTập tin docker-compose. yml sử dụng định dạng YAML, vậy nên các bạn phải viết đúng cú pháp, nếu không sẽ bị lỗi, có thể vào trang Trình phân tích cú pháp YAML trực tuyến để kiểm tra cú pháp viết đúng hay chưa. (chú ý dòng db và wordpress khai báo các dịch vụ chúng tôi chỉ nhận vào 2 dấu cách) viết đúng cú pháp sẽ có kết quả trả về như bên phải màn hình3. Giải thích ý nghĩa của tệp docker-compose. yml
4. Chạy soạn thư Sau khi chỉnh sửa file cấu hình hoàn tất, chúng ta đến bước chạy soạn thư sử dụng lệnh. docker-compose up -d chạy lệnh docker-compose up -dKết quả chạy nhanh là do trước đó mình đã chạy demo một lần rồi nên nó sẽ không tải lại tài nguyên nữa và chạy rất nhanh, có thể xem ảnh bên dưới để xem quy trình chạy
Bài viết thuộc quyền Phạm Quang Minh - Minh Monmen. Techmaster đăng bài dưới sự cho phép của tác giả Link bài viết gốc https. //kipalog. com/posts/Dev-hien-dai-phan-1--Setup-moi-truong-dev-voi-docker Thầy Phạm Quang Minh hiện tại là giảng viên Techmaster trong các Khoa học Lộ trình DevOps cho cá nhân và doanh nghiệp
Đã qua rồi cái thời nông dân ấy, khi nào cứ mỗi lần cài lại máy, tôi lại mất cả ngày để setup LAMP stack. Đã qua rồi cái thời kỳ khốn khó đấy, khi mà bookmark của tôi luôn tràn ngập những bài viết hướng dẫn "Hướng dẫn cài đặt php 5. 6 lên ubuntu 14. 04". Dù biết đó là một thời hoài niệm, nhưng tôi sẽ phải tiến lên điều đầu tiên đầu tiênChào các bạn. Nhân lúc thiên hạ vừa kết thúc ngày làm việc cuối cùng của năm 2018 dương lịch, mình tranh thủ làm vài dòng về những thứ mà mình đã được trải nghiệm trong công việc của một lập trình viên. Đây sẽ là một chùm bài viết có liên quan đến nhau được mình xây dựng để hướng dẫn các bạn tiến sâu hơn vào cuộc sống và công việc hàng ngày của một nhà phát triển. Mình chỉ mới nghĩ ra một số nội dung sẽ nói trong những bài viết sau, thế nên rất hy vọng mình có thể kiên trì thực hiện hết được series này cũng dựa trên sự ủng hộ của các bạn Mình là Monmen, một backend developer, vì vậy chủ yếu các nội dung mình chia sẻ sẽ xoay quanh các công nghệ backend, kiến trúc, đóng gói và triển khai ứng dụng bên server. Nếu các bạn quan tâm thì đọc tiếp nha Truyện trước mắt thì series sẽ có 2 phần mở đầu như sau. Tất cả những kiến thức và kinh nghiệm từ 2 bài viết này đều sẽ được áp dụng trong những series sau, khi mình bắt đầu nói về việc phát triển microservice hay quy trình CI/CD,. Mặc dù mình muốn bắt đầu từ những thứ thô sơ như là "Cách thức hoạt động của trang web" hay đại loại thế, nhưng vì bản tính ham vui nên mình sẽ bắt đầu từ khúc giữa cho nó mới lạ =)) Request of process developmentNgày xưa khi còn làm việc với team kha khá người, điều mình sợ nhất đó chính là công việc mỗi khi có ai đó tham gia vào dự án, là sẽ lại phải ngồi hỗ trợ người ta cài đủ thứ lên máy, cấu hình đủ thứ gió. Một điều nữa là khi cài đặt lại máy. Quả là ác mộng khi bạn phải ngồi setup lại hết các stack công nghệ trên máy, rồi lại vẫn y như rằng gặp những lỗi quái dị, khi thì thiếu cấu hình, khi thì cho phép,. make you play crazy Vì vậy mình rút ra mấy thứ cần phải giải quyết là. Mất rất lâu để mình nhận ra và bắt đầu sử dụng docker như 1 vị trí cứu tinh. Ấy nhưng mà nó cũng lại dẫn mình vào một loạt những nỗi buồn buồn cười khác Cần thiết lập những gìSau rất nhiều lần làm theo tut trên mạng về việc setup môi trường dev laravel, nodejs,. Mình cảm thấy đây đều là những hướng dẫn tiếp cận từ hướng làm cách nào để bạn "chạy" được dự án đó bằng docker (kiểu để nó chạy được ra chữ 8 thành công chức năng), hơn nữa là để các bạn áp dụng vào quá . Vì thế mình đã phân chia lại việc setup môi trường dev như sau
Tưởng tượng bây giờ bạn thiết lập toàn bộ các dịch vụ cần thiết cho ứng dụng của bạn như cơ sở dữ liệu, bộ đệm, hàng đợi,. chỉ trong 1 nốt nhạc, điều mà trước đây bạn phải ngồi cả ngày mới thật tuyệt làm sao Yêu cầu kiến thứcVì là bài mở đầu nên nói hơi dông dài, thôi giờ bắt tay vào việc luôn nhỉ. Đầu tiên là thứ bạn cần có để đọc bài viết này
đầu ra. Setup thành công các loại cơ sở dữ liệu, bộ đệm,. nói chung là ngăn xếp liên tục để sử dụng chung cho việc phát triển nhiều dự án tài nguyên. Mọi thứ mình nói trong bài viết này đã được mình tổng hợp lại vào 1 kho lưu trữ trên github, sẵn sàng cho công việc sử dụng của các bạn với kiến trúc thư mục chuẩn và 1 số đoạn mã cho các dịch vụ đi kèm Tôi cần Mongodb cho dự ánNguyên mẫu đơn giảnĐược rồi, giờ là lúc bạn nghĩ xem dự án của các bạn cần 1 stack công nghệ như thế nào. Please started with 1 stack menu. MongoDB - ExpressJS - NodeJS. Vì vậy, bạn đã nhìn thấy thành phần liên tục chính là MongoDB rồi. Ta started with an file 9 đơn giản để chạy được mongodb
Trong bài viết này mình chỉ dùng cú pháp soạn bản 2 nhé, chi tiết các bạn xem trong docs của nó Giải thích ý nghĩa. Trong tệp trên mình định nghĩa là 1 dịch vụ có tên là 0, với hình ảnh 1 chạy trong vùng chứa có 0 là 0. Cuối cùng là hiển thị cổng 2 từ vùng chứa ra bên ngoài máy chủ để mình có thể sử dụng các loại công cụ như 3 để truy cập và quản lýRất đơn giản phải không nào, chỉ cần tạo tệp 9 và chạy 5 là bạn đã có ngay một bản cài đặt mongodb mới nhất trên máy cá nhân ngay trong vài nốt nhạcDữ liệu ở đâu?Rất tiếc, vấn đề xuất hiện, khi mình tiếp tục chạy docker-compose, có thể là với việc đang chạy 6, hoặc là tắt máy,. và ngẫu nhiên dữ liệu của biến mất dữ liệu của mình. Đây chính là lý do mongodb thuộc về ngăn xếp liên tục, tức là mình cần nó lưu lại dữ liệu mỗi khi mình tắt máyGiải pháp xem ra cũng hết sức đơn giản, chỉ cần mount vùng dữ liệu của mongodb lên bên ngoài máy chủ của mình thôi. Vì thế là mình tạo thêm 1 thư mục 7 để chứa dữ liệu cho vùng chứa này và viết thêm vào tệp 9 như sau
Trong đó 7 là thư mục mới được tạo ra trong dự án này, còn 0 là nơi mongodb chứa dữ liệu trong vùng chứa. Thử lại với 5 và vào xem trong thư mục 7 nào. Bạn sẽ thấy 1 lô những tệp mới được thêm vào bởi mongo container
Sao tôi lại không có quyền?Nhưng mà lạ chưa, sao tất cả file sinh ra lại đều thuộc về 1 user 999 xa lạ thế kia? . Như các bạn đã biết là những tập tin này thuộc về 1 người dùng và nhóm khác với tài khoản của bạn thì đơn giản là bạn không có quyền đối với chúng. Sau này muốn sao chép dữ liệu này đi chỗ khác, hay xóa đi thì cũng không được
Thật có thể cho chúng ta là mặc dù quyền volume vẫn là một vấn đề hết sức đau đầu khi làm việc với docker, nhưng với 1 số hình ảnh được viết chuẩn và xuề xòa như mongodb thì họ đã kiến trúc 3 cho phép chúng ta chạy chương trình . Tức là tập tin trong tập được sinh ra sẽ thuộc về người dùng và nhóm thật của chúng ta luôn. Và ta sẽ có toàn quyền với nóGiờ các bạn hãy xóa toàn bộ thư mục 7 theo lệnh 5 và tạo lại dữ liệu thư mục để chúng ta bắt đầu lại từ đầu. Nhưng là với tệp 9 đã được chỉnh sửa như sau
Và chúng ta thử xem lại file dữ liệu nhé
Thật bất ngờ, tất cả các tệp mới sinh ra trong thư mục dữ liệu mình chọn làm tập đã xuất hiện với người dùng và nhóm của mình. Giờ mình đã có toàn quyền với các dữ liệu này mà không sợ việc thay đổi ảnh của mình ảnh hưởng đến quyền của mongodb trong container Giải thích 1 chút. ở đây mình thêm dòng 7 trong tệp 9 thực chất là bảo thằng docker. "Đây là 9 và 80 tài khoản 81 của anh, chú ý vào vùng chứa chạy mấy cái quy trình trong vùng chứa dưới 9 và 80 này nhé. "Hệ thống linux chỉ quan tâm đến 9 và 80 của người dùng, chứ không quan tâm đến 86 đâu nhé, nên mình chỉ cần pass cho docker cái 9 và 80 của mình là được. Còn tìm 2 con số này ở đâu thì đơn giản là bạn gõ lệnh sau vào terminal 8Sử dụng như thế nào?Giờ sau khi bày ra được thằng mongodb, mình bắt đầu truy cập câu hỏi, vậy những thằng khác kết nối với mongo của mình thế nào?
8Ở đây mình định nghĩa 1 mạng có tên là 83 và sử dụng nó cho dịch vụ 0 ở trên. try to run any
Các bạn có để ý vài dòng đầu tiên, khi docker-compose tạo ra mạng 85 mà không phải chỉ 86 như mình định nghĩa không? . This is call is 88 with default value get from the name folder contains ( 89). Giá trị này có thể thay đổi được, nhưng mình sẽ không nói ở đây cho đỡ rối nhé. Các bạn hãy nhớ cái tên dài loằng ngoằng này, vì tới phần 2 của series này sẽ dùng tới đóThêm redis và mysql xem thế nàoĐáng lý là bạn đã quan tâm vì vừa có ngay 1 con mongodb sẵn sàng hoạt động ở trên rồi, nhưng không, dự án của bạn lớn quá, anh Màn yêu cầu sử dụng redis để lưu trữ dữ liệu nữa. Ô rồi bạn lại đang ở bên ngoài 1 dự án php chạy MySQL. Add into any time? Vẫn theo đúng các bước với mongo ở trên, mình cắm được con redis và mysql vào ngăn xếp liên tục của mình như sau 8Chiêu dùng lại, mình áp dụng y như cũ với thằng mongo (may mắn là bạn làm image redis và mysql cũng thông minh như mongo trong cách dùng 9 và 80 vậy). And back____15
Tada, thế là mình đã luôn có con redis và mysql có sẵn ở cổng 83 và 84 rồi, tất cả chỉ trong khoảng thời gian 1 đoạn trà. Tất cả đã có sẵn cho công việc phát triển ứng dụng của mìnhTổng kếtQua bài hướng dẫn này, mình đã tạo xong cho các bạn 1 ngăn xếp liên tục sử dụng cho mục đích phát triển trên localhost. Ngăn xếp này hoàn toàn có thể bổ sung, loại bỏ các dịch vụ khác như thỏmq, postgresql, neo4j,. hay bất cứ điều gì bạn cần cho sự phát triển của mình. Phía dưới đây mình có dẫn link tới kho github chứa nguồn của toàn bộ bài hướng dẫn, cũng như thư mục kiến trúc chuẩn, 1 số config phức tạp hơn và 1 số đoạn trích dịch vụ khác để các bạn bổ sung thêm vào file 85Nếu bạn là người mới, chỉ cần sao chép repo này của mình, chọn đoạn mã dịch vụ mà bạn cần rồi làm theo hướng dẫn là bạn đã có ngay 1 ngăn xếp dịch vụ phát triển Trong bài viết tiếp theo, mình sẽ hướng dẫn các bạn tạo môi trường cho việc chạy code của từng dự án và sử dụng các dịch vụ từ ngăn xếp liên tục này |