06 Passo a passo - KleberVales/Dominando-Docker GitHub Wiki
Estrutura básica de um Dockerfile
- FROM
Define a imagem base. Exemplo:
FROM ubuntu:22.04
- LABEL
Adiciona metadados à imagem, como autor ou versão.
LABEL maintainer="[email protected]"
- RUN
Executa comandos durante a construção da imagem.
RUN apt-get update && apt-get install -y python3
- COPY / ADD
Copia arquivos do host para dentro da imagem.
COPY app.py /usr/src/app/
- WORKDIR
Define o diretório de trabalho dentro da imagem.
WORKDIR /usr/src/app
- ENV
Define variáveis de ambiente.
ENV PORT=5000
- EXPOSE
Indica a porta que o container vai usar.
EXPOSE 5000
- CMD
Define o comando padrão que será executado quando o container iniciar.
CMD ["python3", "app.py"]
- ENTRYPOINT
Similar ao CMD, mas fixa o comando principal, permitindo argumentos adicionais.
ENTRYPOINT ["python3", "app.py"]
Multi Stage
Estágio de build
Estágio de execução
Test stage
Lint/Analysis stage
Dev stage
Final/Production stage
-
Criar um Dockerfile
-
Criar o estágio de Build
FROM gradle:jdk21 AS build
WORKDIR /app
COPY build.gradle settings.gradle ./
COPY src ./src
RUN gradle clean bootJar -x test
- Criar o estágio de execução
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=build /app/build/libs/*.jar app.jar
- Expor a porta
EXPOSE 8081
- Define variáveis do Spring Security via ambiente (opcional, mas recomendado)
ENV SPRING_SECURITY_USER_NAME=admin
ENV SPRING_SECURITY_USER_PASSWORD=admin_pass
ENTRYPOINT ["java", "-jar", "app.jar", "--server.port=8081"]