Sobes.tech
Junior — Middle

Wat zijn de kenmerken van Dockerfiles voor talen die vooraf compilatie vereisen en voor geïnterpreteerde talen?

sobes.tech AI

Antwoord van AI

Voor talen met vooraf compileren (bijvoorbeeld Java, C++), bevat de Dockerfile meestal een build stage, waarin de broncode wordt gecompileerd tot binaire bestanden, en wordt vervolgens een minimale afbeelding gemaakt om de toepassing uit te voeren. Dit vermindert de grootte van de uiteindelijke afbeelding en scheidt het compilatieproces van de uitvoering.

Voor geïnterpreteerde talen (bijvoorbeeld Python, JavaScript) kopieert de Dockerfile meestal gewoon de broncode en installeert de benodigde afhankelijkheden, omdat compilatie niet nodig is. In dergelijke gevallen bevat de afbeelding de interpreter en alle bibliotheken die nodig zijn om de toepassing uit te voeren.

Voorbeeld voor Java (meertraps bouwen):

FROM maven:3.8.5-openjdk-17 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn package -DskipTests

FROM openjdk:17-jdk-slim
COPY --from=build /app/target/app.jar /app/app.jar
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

Voorbeeld voor Python:

FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]