Junior — Middle
Хусусиятҳои Dockerfile барои забонҳое, ки ниёз ба пешакӣ компил кардан доранд, ва барои забонҳои таҳриршаванда чӣ гуна аст?
sobes.tech AI
Ҷавоб аз AI
Барои забонҳои бо пешакӣ таҳияшуда (масалан, Java, C++) Dockerfile одатан як марҳилаи сохтмонро дар бар мегирад, ки дар он коди манбаъ ба файлҳои бинарӣ таҳия мешавад, ва сипас як тасвири минималӣ барои иҷрои барнома сохта мешавад. Ин имкон медиҳад, ки андозаи тасвири ниҳоӣ кам карда шавад ва равандҳои таҳия ва иҷро ҷудо карда шаванд.
Барои забонҳои таҳлилшаванда (масалан, Python, JavaScript), Dockerfile одатан танҳо нусхабардории коди манбаъ ва насб кардани вобастагиҳои заруриро мекунад, зеро таҳия талаб намекунад. Дар чунин ҳолатҳо, тасвир интерпретатор ва ҳама китобхонаҳоро барои иҷрои барнома дар бар мегирад.
Масалан барои Java (тариқи бисёрмарҳила):
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:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]