Bài 18. Xây dựng Docker Compose .NET Core Và SQL Server

Giới thiệu

Trong bài viết này, chúng ta sẽ cùng nhau thực hiện đóng gói Docker Compose cho một ứng dụng .NET Core API, có kết hợp sử dụng cơ sở dữ liệu SQL Server.

Mục tiêu

  • Viết và hiểu về cấu trúc của tệp tin compose
  • Hiểu về các lệnh trong docker
    • docker-compose up
    • docker-compose ps
    • docker-compose down
  • Biết cách thao tác với docker-compose trên hệ điều hình Ubuntu
  • Hiểu được cách một ứng dụng .NET Core được đóng gói và tạo thành Docker Image
  • Hiểu cách .NET Core tham chiếu ghi đề tệp tin appsettings.json khi khởi động
  • Sử dụng biến môi trường trong compose file

Chuẩn bị

  • Máy tính cài đặt sẵn Docker trên hệ điều hành Ubuntu và có mạng
  • Tải về source code tại git repo: https://github.com/dothiengiang0001/netcore_api
  • Đọc các nội dung sau trong source code:
    • Dockerfile
    • config/appsettings.json

Nội dung

1. Tạo compose file

Trong thư mục source code, tạo tệp tin docker-compose-build.yaml (đã có sẵn trong source code) với nội dung sau:

version: '3.8'

services:
  sqlserver:
    container_name: sqlserver
    image: mcr.microsoft.com/mssql/server:2019-latest
    environment:
      MSSQL_SA_PASSWORD: "1236fG543$"
      ACCEPT_EULA: "Y"
    ports:
      - "1434:1433"
    volumes:
      - sql_data:/var/opt/mssql
    restart: always

  tedublog-api:
    container_name: tedublog-api
    build:
      context: .
      dockerfile: ./src/TeduBlog.Api/Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:80
      - "DatabaseSettings:DefaultConnection=Server=sqlserver;Database=TeduBlog;User Id=sa;Password=1236fG543$;TrustServerCertificate=true"
    ports:
      - "8080:80"
    depends_on:
      - sqlserver
    restart: always

  tedublog-webapp:
    container_name: tedublog-webapp
    build:
      context: .
      dockerfile: ./src/TeduBlog.WebApp/Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:80
      - "DatabaseSettings:DefaultConnection=Server=sqlserver;Database=TeduBlog;User Id=sa;Password=1236fG543$;TrustServerCertificate=true"
    ports:
      - "8081:80"
    restart: always
    depends_on:
      - sqlserver

volumes:
  sql_data:
    name: sql_data

2. Thực hiện triển khai compose

docker-compose -f docker-compose-build.yaml up -d --build

3. Kiểm tra kết quả

Kiểm tra image dotnet-api trong docker.

Thực hiện câu lệnh sau để kiểm tra trạng thái của các container trong compose:

docker-compose -f docker-compose-build.yaml ps

Cuối cùng, mở trình duyệt tại địa chỉ: 

- API: http://127.0.0.120:8080/swagger/index.html
- Web: http://127.0.0.120:8081

Có thể thiếp lập expose cả hai port ra ngoài trên VirtualBox như sau:

Kiếm tra lại 2 đường dẫn trên trình duyệt chúng ta có kết quả:

 

 

 


Tác giả: Đỗ Thiên Giang

Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.

Lên trên