Images
Eigene Docker-Images ermöglichen die Erstellung massgeschneiderter Container mit individuellen Konfigurationen, Abhängigkeiten und Anwendungen. Sie basieren auf einer Dockerfile, die die Anweisungen zum Aufbau des Images enthält.
Kommandos
Beispiel
Dieses Beispiel erstellt ein einfaches Node.js-Backend mit Express.
FROM node:lts-alpine
ENV NODE_ENV=production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
VOLUME /usr/src/app/data
EXPOSE 3000
RUN chown -R node /usr/src/app
USER node
CMD ["npm", "start"]Docker-Image builden
docker build -t express-server .Image auf Docker Hub veröffentlichen
Multi-Stage-Images
Multi-Stage-Builds ermöglichen es, schlanke und optimierte Docker-Images zu erstellen, indem sie verschiedene Build-Stufen in einem Dockerfile nutzen.
Beispiel
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
USER $APP_UID
WORKDIR /app
ENV ASPNETCORE_URLS=http://*:5001
EXPOSE 5001
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["api/Api.csproj", "api/"]
RUN dotnet restore "api/Api.csproj"
COPY . .
WORKDIR "/src/api"
RUN dotnet build "./Api.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Api.dll"]Vorteile
Kleinere Images, da nur die tatsächlich benötigten Dateien ins finale Image übernommen werden.
Trennung von Build- und Laufzeitumgebung.
Vermeidung unnötiger Abhängigkeiten im finalen Image.
Last updated