Junior — Middle
Əvvəlcədən tərtib tələb edən dillər və şərh olunan dillər üçün Dockerfile-lərin xüsusiyyətləri nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Əvvəlcədən tərtib olunan dillər üçün (məsələn, Java, C++), Dockerfile adətən bir build mərhələsini əhatə edir, burada mənbə kodu ikili fayllara tərtib olunur və sonra tətbiqi işlətmək üçün minimal bir görüntü yaradılır. Bu, yekun görüntünün ölçüsünü azaltmağa və tərtib prosesini icra etməkdən ayırmağa imkan verir.
İnterpretasiya olunan dillər üçün (məsələn, Python, JavaScript), Dockerfile adətən yalnız mənbə kodunu kopyalayır və lazım olan asılılıqları quraşdırır, çünki tərtib tələb olunmur. Belə hallarda, görüntü tətbiqi işlətmək üçün lazım olan interpretatoru və bütün kitabxanaları ehtiva edir.
Java üçün nümunə (çox mərhələli tərtib):
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 nümunə:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]