Junior — Middle
Kādas ir Dockerfile iezīmes priekš valodām, kurām nepieciešama iepriekšēja kompilācija, un interpretējamām valodām?
sobes.tech AI
Atbilde no AI
Par priekšapstrādātām valodām (piemēram, Java, C++), Dockerfile parasti ietver būvniecības posmu (build stage), kurā avota kods tiek pārvērsts bināros failos, un pēc tam tiek izveidots minimāls attēls programmas palaišanai. Tas ļauj samazināt galīgā attēla izmēru un atdalīt būvniecības procesu no izpildes.
Interpretējamām valodām (piemēram, Python, JavaScript) Dockerfile parasti vienkārši kopē avota kodu un instalē nepieciešamās atkarības, jo kompilācija nav nepieciešama. Šādos gadījumos attēls satur interpretatoru un visas bibliotēkas, kas nepieciešamas programmas izpildei.
Piemērs Java (daudzposmu būvniecība):
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 piemērs:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]