Cách tạo tệp Docker Compose

0
8

        Tìm hiểu những điều cơ bản của tập tin Docker Compose.
    

        
                                                                                    
                        

 dockerhero.jpg "width =" 770

                                            Hình: Docker
                                        

Docker Compose là một công cụ để xác định và chạy các ứng dụng Docker đa container. Nói cách khác, nếu bạn có nhu cầu xác định một dịch vụ yêu cầu nhiều hơn một bộ chứa Docker để hoạt động, Docker Compose có thể là công cụ dành cho bạn.

    
        

Nhưng làm thế nào để bạn sử dụng Docker Compose? Khi bạn đã cài đặt cả nó và daemon Docker, làm thế nào để bạn triển khai các ứng dụng được đóng gói đó? Docker Compose phụ thuộc vào tệp docker-compose.yml (lần lượt, có thể hoạt động cùng với Dockerfile đã thử và đúng).

Tôi sẽ chia nhỏ điều này cho bạn, theo cách đơn giản nhất, để bạn hiểu cách xây dựng tệp Soạn Docker cơ bản của riêng bạn.

XEM: Bộ tuyển dụng: Quản trị viên cơ sở dữ liệu (TechRepublic Premium)

Những thứ duy nhất bạn cần là:

  • Một máy chủ có phiên bản đang chạy của Docker và docker-compose.
  • Một người dùng thuộc nhóm docker.

Cách Docker Compose hoạt động

Nói một cách đơn giản: Docker Compose xây dựng một chồng ứng dụng để chạy một dịch vụ hoàn chỉnh. Tệp docker-compose.yml được chia thành các phần, mỗi phần đại diện cho một vùng chứa duy nhất, khi kết hợp với các vùng chứa khác, tạo ra dịch vụ. Ví dụ: bạn có thể có tệp docker-compose.yml bao gồm hai phần:

  • web – phần máy chủ web của ứng dụng.
  • db – phần máy chủ cơ sở dữ liệu của ứng dụng.

Mỗi phần có thể bao gồm các thành phần khác nhau. Và vì bạn có thể cần phải khá cụ thể với phần web, nên bạn có thể ra lệnh cho docker-compose rằng phần web sẽ được xác định trong Dockerfile (chúng tôi sẽ giữ phần đó để biết cách khác). Trong thực tế, với docker-compose, bạn có thể bao gồm nhiều Dockerfiles để xây dựng các ngăn xếp rất phức tạp. Tuy nhiên, chúng tôi sẽ xây dựng một ngăn xếp khá đơn giản để dễ dàng đưa bạn lên khỏi mặt đất.

Vì vậy, hãy tạo tệp docker-compose.yml này với các phần web và db. Chúng tôi sẽ sử dụng NGINX và MySQL để tạo một ngăn xếp dễ sử dụng cho mục đích phát triển.

Tệp docker-compose.yml

Điều đầu tiên chúng ta phải làm là tạo một tệp mới. Chúng tôi sẽ tạo tập tin đó trong một thư mục mới được tạo. Ban hành lệnh mkdir ~ / docker-build . Thay đổi vào thư mục mới được tạo bằng lệnh cd ~ / docker-build . Khi đã ở trong thư mục đó, hãy tạo tệp docker-compose.yml mới bằng lệnh:

 nano docker-compose.yml 

Hãy nhớ rằng, đây là tệp YAML, vì vậy định dạng phải nhất quán (nếu không việc xây dựng sẽ thất bại).

Điều đầu tiên cần làm là thêm tiêu đề của tệp. Ở đầu tệp, thêm phần sau:

 phiên bản: '3' 

Điều này hướng dẫn Docker Soạn rằng chúng tôi đang sử dụng phiên bản 3 của công cụ. Dòng tiếp theo sẽ hướng dẫn Docker Compose rằng những gì tiếp theo sẽ là các dịch vụ để triển khai. Điều đó được định nghĩa với:

 dịch vụ: 

Cho đến nay, tệp là:

 phiên bản: '3'
services: 

Phần đầu tiên để xác định sẽ là phần web của ngăn xếp. Chúng tôi có thể làm điều này với hai dòng đơn giản:

 web:
     image: nginx 

Những gì ở trên là hướng dẫn Docker Compose triển khai một container bằng hình ảnh nginx chính thức. Chúng tôi không làm gì đặc biệt cho container này. Nó chỉ là cơ bản.

Phần tiếp theo của chúng tôi sẽ xác định cơ sở dữ liệu. Cái này phức tạp hơn một chút, vì chúng ta phải cấu hình các tham số cần thiết để cơ sở dữ liệu hoạt động. Chúng tôi bắt đầu bằng cách xác định phần với;

 db: 

Tiếp theo, chúng tôi hướng dẫn Docker Compose sử dụng hình ảnh mysql cho cơ sở dữ liệu với:

 hình ảnh: mysql 

cổng bên ngoài và bên trong để sử dụng cho cơ sở dữ liệu. Để làm điều này, chúng tôi sẽ sử dụng các cổng MySQL mặc định và định nghĩa chúng như vậy:

 cổng:
- "3306: 3306" 

Cuối cùng, chúng tôi định cấu hình môi trường cơ sở dữ liệu. Môi trường sẽ là các tùy chọn cấu hình cho cơ sở dữ liệu (mật khẩu, người dùng, tên cơ sở dữ liệu). Phần này trông giống như:

 môi trường:
- MYSQL_ROOT_PASSWORD = mật khẩu1
- MYSQL_USER = người dùng
- MYSQL_PASSWORD = mật khẩu2
- MYSQL_DATABASE = cơ sở dữ liệu 

Trong đó:

  • password1 là mật khẩu cho người dùng quản trị viên MySQL.
  • người dùng là một người dùng MySQL mới.
  • password2 là mật khẩu cho người dùng MySQL mới.
  • cơ sở dữ liệu là tên của cơ sở dữ liệu. đã sử dụng.

Mỗi điều trên sẽ được xác định bởi bạn. Đảm bảo sử dụng các mật khẩu mạnh, duy nhất, để giữ cho ngăn xếp của bạn an toàn.

Đặt tệp này lại với nhau trông giống như vậy:

 phiên bản: '3'
dịch vụ:
  web:
    hình ảnh: nginx
  db:
    hình ảnh:
    cổng:
    - "3306: 3306"
    môi trường:
    - MYSQL_ROOT_PASSWORD = mật khẩu
    - MYSQL_USER = người dùng
    - MYSQL_PASSWORD = mật khẩu
    - MYSQL_DATABASE = demodb 

Hãy nhớ rằng, cấu trúc của tệp phải nhất quán, nên thụt lề cẩn thận.

Lưu và đóng tệp đó.

Xây dựng với Docker Compose

Bây giờ chúng ta đã xây dựng tệp docker-compose.yml, đã đến lúc xây dựng ứng dụng. Vì đây là một ứng dụng rất đơn giản, về cơ bản nó sẽ triển khai hai container – máy chủ web và cơ sở dữ liệu. Làm thế nào bạn sử dụng hai container đó phụ thuộc vào bạn. Tất nhiên, bạn có thể phát triển hình ảnh của riêng mình để sử dụng cho việc này (giả sử, hình ảnh NGINX và MySQL tùy chỉnh kết hợp liền mạch với nhau để tạo ra một dịch vụ hoặc ứng dụng độc đáo). Trong trường hợp của chúng tôi, chúng tôi chỉ đơn giản là sử dụng các hình ảnh mặc định (vì mục đích trình diễn).

Vì vậy, bây giờ, để xây dựng ngăn xếp, hãy quay lại cửa sổ đầu cuối, đảm bảo bạn đang ở trong thư mục bản dựng của mình và đưa ra lệnh:

 docker-compose up 

Lệnh trên sẽ triển khai cả bộ chứa web và db. Nếu bạn chỉ chạy lệnh đó, các thùng chứa sẽ triển khai ở chế độ đính kèm, do đó bạn sẽ không nhận được dấu nhắc bash của mình. Nếu bạn muốn chạy chúng ở chế độ tách rời, bạn sẽ phát lệnh:

 docker-compose up -d 

Sau khi chạy xong, bạn sẽ thấy ID container được liệt kê ( Hình A ).

 dockercomposefilea.jpg "data-original =" https://tr3.cbsistatic.com/hub/i/2019/07/23/de8768ea-692f-4ea7-a2ac-c9d0f7d22a /dockercomposefilea.jpg[19459055[[19459006[[19459030[[19459029[[19459054[] </div>
</figcaption></figure>
<div class=

Để đảm bảo các container đang chạy, hãy ra lệnh:

 docker-compose ps 

Bạn sẽ thấy tên của container, lệnh, trạng thái, và các cổng được liệt kê ( Hình B ).

 dockercomposefileb.jpg "data-original =" https://tr4.cbsistatic.com/hub/i/2019/07/23/b1db3bb6-a8ca-414f-bc2c-bf /dockercomposefileb.jpg[19459055[[19459006[[19459030[[19459029[[19459060[lệnhps</p>
</p></div>
</figcaption></figure>
<div class=

Xin chúc mừng, bạn vừa triển khai "ngăn xếp" container đầu tiên của mình bằng Docker Compose. Vâng, đây là một ví dụ cực kỳ đơn giản, nhưng nó là một ví dụ giúp bạn bắt đầu một hành trình rất dài và trọn vẹn. Thời gian tới, chúng tôi sẽ tạo một tệp docker-compose.yml phức tạp hơn, một tệp hoạt động cùng với Dockerfile.

                                                                                

                                                

Cũng xem