Avançando com DockerFile e Docker-Compose Public

Avançando com DockerFile e Docker-Compose

Thiago Figueiredo
Course by Thiago Figueiredo, updated more than 1 year ago Contributors

Description

Estudo sobre DockerFile e Docker-Compose

Module Information

Description

Introdução sobre o curso
Entendo um pouco do Dockerfile e docker-compose e sua documentação de referência. Dockerfile: https://docs.docker.com/engine/reference/builder/ docker-compose: https://docs.docker.com/compose/
Show less

Description

Sintaxe do Dockerfile
No tags specified
O Dockerfile não tem extensão. Possui o formato: INSTRUCTION arguments Começa com a instrução FROM Não é case-sensitive, deve começar com todas as letras maiúsculas. FROM >> indica a partir de qual imagem começar, ou seja, imagem base, geralmente pré-configurada e a mais leve e minimalista possível, parar se ter o máximo de performance. FROM arguments >> nome da imagem exemplo: FROM node:alpine
Show less

Description

Melhores práticas ao se trabalhar com a instrução RUN
No tags specified
Instrução utilizada para executar comandos nas camadas de construção da imagem. São executados quaisquer comandos Shel ou CMD. Deve sempre tentar suprimir a iteração com o usuário. Sempre tentar utilizar o menor número possível de instruções RUN. Use concatenação de instrução. Exemplo:    RUN apt-get update    RUN apt-get update && apt-get install git -y    RUN apt-get update && apt-get install git vim node -y   Versões de imagem 'alpine', geralmente não vem com o 'bash' instalado, devendo seguir a seguinte linha de instrução abaixo: Não se faz necessário passar o parametro '-y', pois será executado por padrão. Exemplo:    RUN apk add --no-cache gcc musl-dev linux-headers
Show less

Description

Trabalhando com Workdir
No tags specified
Instrução que determina qual o seu diretório de trabalho. Significa que qualquer execução ou comando de script que precisar ser realizado na imagem, será executado a partir desse diretório de trabalho. Exemplo: WORKDIR 'caminho'    WORKDIR /code
Show less

Description

Instruções de copias de arquivos
No tags specified
COPY: Permite copiar arquivos de um local específico para a nossa imagem do Docker. Copia tanto arquivos quanto diretórios. Copia todos os arquivos a partir do contexto atual, ou seja, do local do Dockerfile (diretório pai). Em caso de se ter vários subdiretórios, os mesmos serão copiados. O '.' significa que é o diretório atual. Não copia diretórios que estejam fora do diretório que se encontra o Dockerfile. Exemplo: COPY 'local de origem' 'local de destino'    COPY ./origem destino   ADD: Permite copiar arquivos de um local específico para a nossa imagem do Docker. Suporta cópia de um arquivo zipado (.tar .gz .zip) para o destino e faz a descompressão automaticamente. Suporta cópia de arquivo vindo de uma URL. Não é o comando mais recomendando para se fazer cópia. Exemplo: ADD 'local de origem' 'local de destino'    ADD ./origem /destino
Show less

Description

Trabalhando com variáveis de ambiente
No tags specified
Cria variáveis de ambiente na para  imagem do Docker. Exemplo: ENV 'chave' 'valor'    ENV nome seunome Exemplo: 'chave'='valor' -> pode-se definir várias variáveis de uma única vez    ENV sobrenome=seusobrenome idade=suaidade
Show less

Description

Trabalhando com ENTRYPOINT e CMD
No tags specified
Usados para indicar como quer executar a imagem. Podem ser utilizdos juntos. A recomendação é semrpe utilziar a forma 'exec' da instrução.   ENTRYPOINT permite configurar um executável para o seu container. Geralmente é usado em cenários onde se deseja que o container se comporte exclusivamente como se o execuável estivesse encapsulado. Não se deseja que o suuário substituia o padrão do executável. Exemplo: ENTRYPOINT 'comando' >> formato shell || CMD ["executavel", "parametro"] >> formato exec    ENTRYPOINT ping localhost    ENTRYPOINT ["ping", "localhost"]   CMD provê um padrão para executar o container. É recomando utilizar quando quer dar uma flexibildiade para o usuário, ou seja, o usuário poder indicar quel comando quer executar quando rodar o container. Exemplo: CMD 'comando' >> formato shell || CMD ["executavel", "parametro"] >> formato exec    CMD ping localhost    CMD ["ping", "localhost"]
Show less

Description

Trabalhando com EXPOSE e USER
Por padrão, todo container quando executa as aplicações, ele executa com o usuário root.   EXPOSE informa ao Docker, para que o container escutar uma porta de rede específica As configurações serão sobrescritas, quando utilizada a opção '-p' ao levantar um container com essa imagem. Podem ser liberadas porta TCP ou UDP. Exemplo: EXPOSE 'porta'    EXPOSE 80    EXPOSE 80/udp   USE muda o contexto de usuário, de um atual para um específico. Indicado para aumentar a segurança do ambiente. Exemplo: USE 'usuário'    USE myuser
Show less

Description

ntrodução ao Docker-Compose
No tags specified
Executa de maniera declarativa, como executar uma ou várias imagens. Concetrar em um único arquivo, todo o funcionamento do ambiente Docker. O arquivo deve ter o seguinte nome: docker-compose.yml. Esse arquivos deve seguir um padrão de identação de espaçamento entre as instruções de 2 espaços aninhados. Sintaxe:     version: "3" //documentação de cada versão que depende da versão do docker instalada    services: //configurações dos serviços a serem executados       web: //nome do serviço          image: imagemteste //da qual se deseja trabalhar que pode ser local ou do dockerhub          ports: //define as portas que essa aplicação irá ouvir             - 8080:8080 //porta do host:porta da imagem        redis:           image: redis:latest
Show less

Description

Trabalhando com build no Docker-Compose
No tags specified
Diretiva de 'build'. Exemplo: build: 'diretório onde estará o arquivo para buildar: Dockerfile'    build: .   Pra forçar o build na execução do coker-compose:    # docker-compose up -d --build
Show less

Description

Trabalhando com CMD e ENTRYPOINT no compose
No tags specified
Sobrescreve comandos na execução do container. Exemplo:    command: ["ping", "localhost"]
Show less

Description

Trabalhando com variáveis de ambiente no Docker-Compose
No tags specified
Utiliza-se basicamente, o mesmo processo do Dockerfile. Exemplo:    environment:        ENV_01: valor      environment:        - ENV_01=valor   Para listar as variáveis de ambiente do cotainer:    # docker exec 'id_container' printenv
Show less

Description

Depends_on
No tags specified
Propriedade que está paneas disponível para quem usa o docker-compose, que expressa uma dependência entre serviços. No processo do build, ele primeiro cria o serviço do qual se depende primeiro. Inicializa os containers de uma maneira ordenada. Pode-se trablhar com várias dependências ao mesmo tempo onde uma pode depender de várias outras também. Exemplo:    depends_on:       - 'nome do serviço'
Show less

Description

Trabalhando com redes no docker-compose
No tags specified
Toda vez que se criar uma rede, deve-se informar no arquivo docker-compose, que a mesma tem que ser criada. Um serviço pode trabblhar em várias redes ao mesmo tempo. Um rede, estará disponível para vários serviços que queiram fazer parte dela ao mesmo tempo. Exemplo:    networks:        - 'nome da rede que este serviço pertence'    networks:       'nome da rede que este serviço pertence':
Show less

Description

Trabalhando com volumes
No tags specified
Da mesma maneira que na criação de redes, na criação de um volume, deve-se declarar os mesmo no final do arquivo para que os mesmos sejam criados. Exemplo:    volumes:       - 'pasta de origem':'pasta de destino'      volumes:       'nome do colume':
Show less
Show full summary Hide full summary