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

  1. Criar um Dockerfile

  2. 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
  1. Criar o estágio de execução
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=build /app/build/libs/*.jar app.jar
  1. Expor a porta
EXPOSE 8081
  1. 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"]