Loading
Jesús Estévez
This is a live streamed presentation. You will automatically follow the presenter and see the slide they're currently on.
Please puts your hands up if some times your code was working fine in Dev but not in Production
Introduction
Quick overview
Basic:
DockerFile
Docker build -> docker images
Docker run -> container
Docker-compose
Advanced:
Docker Swarm
Setup
Scalability
Resources
Deploy
For other Month
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["HeatMeterWebApi/HeatMeterWebApi.csproj", "HeatMeterWebApi/"]
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["HeatMeterWebApi/HeatMeterWebApi.csproj", "HeatMeterWebApi/"]
RUN dotnet restore "HeatMeterWebApi/HeatMeterWebApi.csproj"
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["HeatMeterWebApi/HeatMeterWebApi.csproj", "HeatMeterWebApi/"]
RUN dotnet restore "HeatMeterWebApi/HeatMeterWebApi.csproj"
COPY . .
WORKDIR /src/HeatMeterWebApi
RUN dotnet build "HeatMeterWebApi.csproj" -c Release -o /app
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["HeatMeterWebApi/HeatMeterWebApi.csproj", "HeatMeterWebApi/"]
RUN dotnet restore "HeatMeterWebApi/HeatMeterWebApi.csproj"
COPY . .
WORKDIR /src/HeatMeterWebApi
RUN dotnet build "HeatMeterWebApi.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "HeatMeterWebApi.csproj" -c Release -o /app
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["HeatMeterWebApi/HeatMeterWebApi.csproj", "HeatMeterWebApi/"]
RUN dotnet restore "HeatMeterWebApi/HeatMeterWebApi.csproj"
COPY . .
WORKDIR /src/HeatMeterWebApi
RUN dotnet build "HeatMeterWebApi.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "HeatMeterWebApi.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["HeatMeterWebApi/HeatMeterWebApi.csproj", "HeatMeterWebApi/"]
RUN dotnet restore "HeatMeterWebApi/HeatMeterWebApi.csproj"
COPY . .
WORKDIR /src/HeatMeterWebApi
RUN dotnet build "HeatMeterWebApi.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "HeatMeterWebApi.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "HeatMeterWebApi.dll"]
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["HeatMeterWebApi/HeatMeterWebApi.csproj", "HeatMeterWebApi/"]
RUN dotnet restore "HeatMeterWebApi/HeatMeterWebApi.csproj"
COPY . .
WORKDIR /src/HeatMeterWebApi
RUN dotnet build "HeatMeterWebApi.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "HeatMeterWebApi.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "HeatMeterWebApi.dll"]
version: '3.5'
version: '3.5'
services:
heatmeterwebapi:
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: heatmeterwebapi:latest
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: kamstrupmalaga/heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44318:80"
version: '3.5'
services:
heatmeterwebapi:
image: kamstrupmalaga/heatmeterwebapi:latest
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44000:80"
deploy:
replicas: 3
version: '3.5'
services:
heatmeterwebapi:
image: kamstrupmalaga/heatmeterwebapi:latest
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44000:80"
deploy:
replicas: 3
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
version: '3.5'
services:
heatmeterwebapi:
image: kamstrupmalaga/heatmeterwebapi:latest
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44000:80"
deploy:
replicas: 3
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
resources:
limits:
cpus: '0.50'
memory: 500M
version: '3.5'
services:
heatmeterwebapi:
image: kamstrupmalaga/heatmeterwebapi:latest
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44000:80"
deploy:
replicas: 3
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
resources:
limits:
cpus: '0.50'
memory: 500M
reservations:
cpus: '0.25'
memory: 20M
Defining a simple Test Case
Variables
HTTP Default values
Using Variable and default HTTP values
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: kamstrupmalaga/heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44318:80"
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: kamstrupmalaga/heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44318:80"
healthcheck:
test: curl --fail -s http://localhost:44318/api/values || exit 1
interval: 1m30s
timeout: 10s
retries: 3
Health
check
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: kamstrupmalaga/heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44318:80"
jmeter:
container_name: jmeter
image: vmarrazzo/jmeter
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: kamstrupmalaga/heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44318:80"
jmeter:
container_name: jmeter
image: vmarrazzo/jmeter
volumes:
- .:/mnt/jmeter
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: kamstrupmalaga/heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44318:80"
jmeter:
container_name: jmeter
image: vmarrazzo/jmeter
volumes:
- .:/mnt/jmeter
entrypoint: jmeter -n -t /mnt/jmeter/Jmeter/TestPlan.jmx
-j /mnt/jmeter/Jmeter/TestPlan.log -l /mnt/jmeter/Jmeter/TestPlan.jtl
-JSERVERNAME=heatmeterwebapi -JPORTNUMBER=80
version: '3.5'
services:
heatmeterwebapi:
container_name: heatmeterwebapi
image: kamstrupmalaga/heatmeterwebapi:latest
build:
context: HeatMeterWebApi/
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "44318:80"
jmeter:
container_name: jmeter
image: vmarrazzo/jmeter
volumes:
- .:/mnt/jmeter
entrypoint: jmeter -n -t /mnt/jmeter/Jmeter/TestPlan.jmx
-j /mnt/jmeter/Jmeter/TestPlan.log -l /mnt/jmeter/Jmeter/TestPlan.jtl
-JSERVERNAME=heatmeterwebapi -JPORTNUMBER=80
depends_on:
- heatmeterwebapi