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ìnhUbuntu
- Hiểu được cách một ứng dụng
.NET Core
được đóng gói và tạo thànhDocker Image
- Hiểu cách
.NET Core
tham chiếu ghi đề tệp tinappsettings.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ànhUbuntu
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.