Sobes.tech
Junior — Middle

Quais são as características do Dockerfile para linguagens que requerem compilação prévia e para linguagens interpretadas?

sobes.tech IA

Resposta da IA

Para linguagens com compilação prévia (por exemplo, Java, C++), o Dockerfile geralmente inclui uma etapa de compilação (build stage), onde o código fonte é compilado em ficheiros binários, e depois é criada uma imagem mínima para executar a aplicação. Isto permite reduzir o tamanho da imagem final e separar o processo de compilação da execução.

Para linguagens interpretadas (por exemplo, Python, JavaScript), o Dockerfile geralmente apenas copia o código fonte e instala as dependências necessárias, uma vez que a compilação não é necessária. Nestes casos, a imagem contém o interpretador e todas as bibliotecas necessárias para executar a aplicação.

Exemplo para Java (compilação em múltiplas etapas):

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"]

Exemplo para Python:

FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]