Junior — Middle
Milyen jellemzői vannak a Dockerfile-oknak az előfordítási és értelmezett nyelvekhez?
sobes.tech MI
Válasz az MI-től
Előre fordított nyelvekhez (pl. Java, C++) a Dockerfile általában tartalmaz egy build szakaszt, ahol a forráskódot bináris fájlokká fordítják, majd egy minimális képet hoznak létre az alkalmazás futtatásához. Ez csökkenti a végső kép méretét, és elválasztja a fordítási folyamatot a futtatástól.
Az értelmezett nyelvekhez (pl. Python, JavaScript) a Dockerfile általában csak a forráskódot másolja és a szükséges függőségeket telepíti, mivel a fordítás nem szükséges. Ilyen esetekben a kép tartalmazza az értelmezőt és az összes könyvtárat, amelyek az alkalmazás futtatásához szükségesek.
Példa Java (többlépcsős fordítás):
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"]
Python például:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]