Section 4 of 6
Docker Containers
🎯 What You'll Learn
- What is Docker
- Creating Dockerfile
- Building images
- Running containers
- Docker Compose
What is Docker?
Docker packages applications and dependencies into containers that run consistently across different environments.
Dockerfile
Dockerfile
Dockerfile
# Build stage
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["InvenTrack.csproj", "./"]
RUN dotnet restore "InvenTrack.csproj"
COPY . .
RUN dotnet build "InvenTrack.csproj" -c Release -o /app/build
# Publish stage
FROM build AS publish
RUN dotnet publish "InvenTrack.csproj" -c Release -o /app/publish
# Runtime stage
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "InvenTrack.dll"]
.dockerignore
.dockerignore
Text
bin/
obj/
out/
.vs/
.vscode/
*.user
*.suo
Build and Run
Build Image
Bash
docker build -t inventtrack:latest .
Run Container
Bash
docker run -d -p 8080:80 --name inventtrack inventtrack:latest
View Logs
Bash
docker logs inventtrack -f
Docker Compose
Run multiple containers together.
docker-compose.yml
YAML
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ConnectionStrings__DefaultConnection=Server=db;Database=InvenTrack;User=sa;Password=YourPassword123!
depends_on:
- db
db:
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=YourPassword123!
ports:
- "1433:1433"
volumes:
- sqldata:/var/opt/mssql
volumes:
sqldata:
Run with Docker Compose
Bash
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
Useful Docker Commands
Docker Commands
Bash
# List running containers
docker ps
# List all containers
docker ps -a
# Stop container
docker stop inventtrack
# Remove container
docker rm inventtrack
# List images
docker images
# Remove image
docker rmi inventtrack:latest
# Execute command in container
docker exec -it inventtrack bash
Key Takeaways
- Docker: Containerize applications
- Dockerfile: Multi-stage build (SDK → publish → runtime)
- docker build: Create image
- docker run: Start container
- Docker Compose: Multi-container applications
- Volumes: Persist data