Ví dụ này giả sử bạn đã có ứng dụng ASP.NET Core trên máy của mình. Nếu bạn chưa quen với ASP.NET, bạn có thể làm theo một hướng dẫn đơn giản để khởi tạo một dự án hoặc sao chép ví dụ ASP.NET Docker của chúng tôi.
Dockerfile
trong thư mục dự án của bạn.Dockerfile
của bạn cho container Linux hoặc Windows. Các thẻ bên dưới có nghĩa là chúng kéo container Windows hoặc Linux tùy thuộc vào chế độ nào được thiết lập trong Docker Desktop cho Windows. Đọc thêm về chuyển đổi container.Dockerfile
giả định rằng ứng dụng của bạn có tên là aspnetapp
. Bạn hãy cập nhật file Dockerfile
để sử dụng tên file DLL trong dự án của bạn.FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Lưu ý: Để làm cho image của bạn càng nhỏ càng tốt, hãy thêm file .dockerignore
vào thư mục dự án của bạn và sao chép phần dưới đây vào đó.
bin/
obj/
Dockerfile
trên sử dụng phương pháp tạo image nhiều bước để image có kích thước nhỏ. Để tìm hiểu về phương pháp tạo image nhiều bước, bạn có thể tham khảo mục "Cách tối ưu hóa Docker Image" ở hướng dẫn sau:
Dockerfile
trong thư mục dự án của bạn.Dockerfile
của bạn cho container Linux hoặc Windows. Các thẻ bên dưới có nghĩa là chúng kéo container Windows hoặc Linux tùy thuộc vào chế độ nào được thiết lập trong Docker Desktop cho Windows. Đọc thêm về chuyển đổi container.Dockerfile
giả định rằng ứng dụng của bạn có tên là aspnetapp
. Bạn hãy cập nhật file Dockerfile
để sử dụng tên file DLL trong dự án của bạn.Phương pháp này giả định rằng dự án của bạn đã được publish sẵn và nó sao chép ứng dụng từ thư mục publish. Tham khảo tài liệu của Microsoft về container hóa ứng dụng .Net Core.
Các bước docker build
ở đây sẽ nhanh hơn nhiều so với phương pháp 1, vì tất cả mọi thứ đã được xây dựng bên ngoài của các bước docker build
và kích thước của image gốc được nhỏ hơn nhiều so với image xây dựng thông thường.
Phương pháp này được ưu tiên cho các công cụ CI như Jenkins, Azure DevOps, GitLab CI, v.v. vì bạn có thể sử dụng ứng dụng đã được publish trong nhiều mô hình triển khai nếu Docker không phải là mô hình triển khai duy nhất đang được sử dụng.
Ngoài ra, bạn sẽ có thể chạy các bài kiểm tra unit test và xuất bản các báo cáo về mức độ mã hoặc sử dụng các plugin tùy chỉnh trên các thành phần được publish bởi CI.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
COPY bin/Release/netcoreapp3.1/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Lưu ý: Để làm cho image của bạn càng nhỏ càng tốt, hãy thêm file .dockerignore
vào thư mục dự án của bạn và sao chép phần dưới đây vào đó.
bin/
obj/
docker build --tag aspnetapp:prod .
docker run --detach --publish 8080:80 --name myapp aspnetapp:prod
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" myapp
172.16.240.197
)Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ tìm hiểu các kiến thức cơ bản về Docker Compose, cách chạy và quản lý các dịch vụ sử dụng Docker Compose.
Trong hướng dẫn này, bạn sẽ học cách triển khai ứng dụng trên nhiều container trong Docker.
Bạn sẽ tìm hiểu các kiến thức cơ bản về Docker Network, các thao tác mạng cơ bản như: tạo và xóa mạng, gắn container vào mạng, gỡ container khỏi mạng.
Trong hướng dẫn này, bạn sẽ học cách xây dựng ứng dụng JavaScript với Docker. Tạo image cho ứng dụng, tối ưu image, chạy container, ...