Sobes.tech
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"]