CodeGym /Các khóa học /Docker SELF /Cấu hình mạng và volumes cho ứng dụng

Cấu hình mạng và volumes cho ứng dụng

Docker SELF
Mức độ , Bài học
Có sẵn

5.1 Cài đặt mạng

Hãy xem xét chi tiết cách cấu hình mạng và volumes cho ứng dụng nhiều container của chúng ta. Điều này đảm bảo các dịch vụ tương tác đúng cách và lưu trữ dữ liệu lâu dài.

Mạng trong Docker cho phép các container tương tác lẫn nhau. Trong ứng dụng này, chúng ta sẽ dùng mạng bridge để kết nối giữa frontend, backend và cơ sở dữ liệu.

Tạo mạng

Chúng ta đã định nghĩa mạng task-network trong file docker-compose.yml:

Yaml

networks:
  task-network:
    driver: bridge

Trong đó:

  • task-network: là tên của mạng dùng để các container giao tiếp với nhau.
  • driver: bridge: là loại mạng. Mạng bridge là mặc định cho giao tiếp giữa các container trên cùng một host.

Kết nối các dịch vụ vào mạng

Chúng ta đã kết nối tất cả các dịch vụ vào mạng này trong file docker-compose.yml. Hãy kiểm tra để đảm bảo rằng từng dịch vụ đều được kết nối đúng cách:

Ví dụ cho frontend:

Yaml

frontend:
  build: ./frontend
  ports:
    - "3000:3000"
  networks:
    - task-network

Ví dụ cho backend:

Yaml

backend:
  build: ./backend
  ports:
    - "5000:5000"
  depends_on:
    - database
  networks:
    - task-network
  environment:
    - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

Ví dụ cho cơ sở dữ liệu:

Yaml

database:
  image: postgres:13
  environment:
    - POSTGRES_DB=taskdb
    - POSTGRES_USER=taskuser
    - POSTGRES_PASSWORD=taskpassword
  networks:
    - task-network
  volumes:
    - db-data:/var/lib/postgresql/data

5.2 Cài đặt volumes

Docker volumes cho phép lưu trữ dữ liệu container trên hệ thống host, đảm bảo lưu trữ lâu dài. Trong ứng dụng của chúng ta, sẽ sử dụng volume để lưu trữ dữ liệu cho cơ sở dữ liệu PostgreSQL.

Tạo volume

Chúng ta đã xác định volume db-data trong file compose.yaml:

Yaml

volumes:
  db-data:

Trong đó:

  • db-data: tên volume sẽ được sử dụng để lưu trữ dữ liệu của cơ sở dữ liệu PostgreSQL.

Kết nối volume với service cơ sở dữ liệu

Chúng ta đã kết nối volume db-data với service cơ sở dữ liệu trong file docker-compose.yml. Hãy đảm bảo điều này được thực hiện đúng cách:

Ví dụ cho cơ sở dữ liệu:

Yaml

database:
  image: postgres:13
  environment:
    - POSTGRES_DB=taskdb
    - POSTGRES_USER=taskuser
    - POSTGRES_PASSWORD=taskpassword
  networks:
    - task-network
  volumes:
    - db-data:/var/lib/postgresql/data  

Trong đó:

  • volumes: xác định những volumes sẽ được kết nối với container.
  • db-data:/var/lib/postgresql/data: liên kết volume db-data với thư mục /var/lib/postgresql/data bên trong container. Thư mục này được PostgreSQL sử dụng để lưu trữ dữ liệu.

5.3 Tệp đầy đủ compose.yaml

Để rõ ràng và đầy đủ, sau đây là toàn bộ tệp compose.yaml, bao gồm cấu hình mạng và volumes:

Yaml

version: '3'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network
        
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
        
  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data
        
networks:
  task-network:
    driver: bridge
        
volumes:
  db-data:

Kiểm tra cấu hình mạng và volumes

Sau khi cấu hình mạng và volumes, hãy đảm bảo rằng mọi thứ đã được cấu hình đúng và hoạt động ổn định:

  1. 1. Khởi chạy containers:
    Terminal
    
    docker compose up
                
  2. 2. Kiểm tra mạng:
    • Sử dụng lệnh docker network ls để đảm bảo rằng mạng task-network đã được tạo.
    • Sử dụng lệnh docker network inspect task-network để kiểm tra rằng tất cả containers đã được kết nối với mạng này.
  3. 3. Kiểm tra volumes:
    • Sử dụng lệnh docker volume ls để đảm bảo rằng volume db-data đã được tạo.
    • Sử dụng lệnh docker volume inspect db-data để kiểm tra chi tiết volume.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION