Junior — Middle
Millised on Dockerfile omadused keelte jaoks, mis nõuavad eelnevat kompileerimist, ja tõlgendatavate keelte jaoks?
sobes.tech AI
Vastus AI-lt
Eelnevalt kompileeritud keeltele (näiteks Java, C++) sisaldab Dockerfile tavaliselt ehitusetappi (build stage), kus lähtekood kompileeritakse binaarfailideks ning seejärel luuakse minimaalne pilt rakenduse käivitamiseks. See võimaldab vähendada lõpliku pildi suurust ning eraldada kompileerimisprotsess käivitamisest.
Tõlgendatavate keelte (näiteks Python, JavaScript) Dockerfile tavaliselt lihtsalt kopeerib lähtekoodi ja installib vajalikud sõltuvused, kuna kompileerimine ei ole vajalik. Sellistel juhtudel sisaldab pilt interpreterit ja kõiki raamatukogusid, mis on vajalikud rakenduse käivitamiseks.
Näide Java jaoks (mitmeastmeline ehitus):
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 näide:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]