Docker Docs - Melhores práticas para Dockerfiles
Vamos falar sobre as melhores práticas para escrever Dockerfiles.
Nos últimos anos, estamos experimentando melhorias na maneira como os Dockerfiles devem ser estruturados.
Viemos do Dockerfile simples com tudo em uma imagem para a construção de imagem de vários estágios.
FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py
Em vez de usar essa abordagem, a dica aqui é usar Use compilações de vários estágios
Aqui está um exemplo de um Dockerfile para um aplicativo Go, poderia ser assim:
FROM golang:1.11-alpine AS build
# Install tools required for project
# Run `docker build --no-cache .` to update dependencies
RUN apk add --no-cache git
RUN go get github.com/golang/dep/cmd/dep
# List project dependencies with Gopkg.toml and Gopkg.lock
# These layers are only re-built when Gopkg files are updated
COPY Gopkg.lock Gopkg.toml /go/src/project/
WORKDIR /go/src/project/
# Install library dependencies
RUN dep ensure -vendor-only
# Copy the entire project and build it
# This layer is rebuilt when a file changes in the project directory
COPY . /go/src/project/
RUN go build -o /bin/project
# This results in a single layer image
FROM scratch
COPY --from=build /bin/project /bin/project
ENTRYPOINT ["/bin/project"]
CMD ["--help"]
Na documentação do docker docs, você pode verificar as melhores práticas quando se trata dos últimos.
Verifique em Docker Documentation
Please, follow our social networks:
Thank You and until the next one! 😉👍
Published on Nov 15, 2020 by Vinicius Moll