Dockerfile: conteinerização de app

Com certeza você também já deve ter ouvido falar bastante em cloud native apps ou microservices e que providência uma série de benefícios etc. E depois vem a pergunta OK, como coloco minha app a correr no container ou conteinerizar e começar a testar os benefícios ou consumir containers e transformar as apps em apps modernas?

Dockerfile

É um ficheiro que contém uma série de instruções ou comandos descrevendo as tarefas que devem ser executadas e incluídas na construção da imagem/container. Para quem já esta familiarizado com tools como packer a ideia de fundo é a mesma porem dockerfile é funcionalidade nativa do docker e não usa YAML ou HCL para definir a config, o ficheiro funciona como template de configuração da imagem.

Nota: Abordando o dockerfile por docker ser de facto o container engine mais popular.

Exemplo

O exemplo é simples, tenho uma imagem rhel8 e pretendo instalar apache, copiar conteúdo da minha web app para o container e expor a minha simples pagina web na porta 80.

https://github.com/manuh-L/containerizing-101

FROM    redhat/ubi8
LABEL   author="vClusterIT.net"
RUN     dnf install httpd httpd-tools -y
EXPOSE  80
WORKDIR /var/www/html
COPY    index.html image.svg ./
RUN     chmod 444 ./index.html
RUN     chmod 444 ./image.svg
CMD     ["/usr/sbin/httpd","-D","FOREGROUND"]

O dockerfile deve sempre conter com instrução FROM no começo onde:
FROM: indica a imagem base a ser usada;
LABEL: adicionar metadata a imagem;
RUN: equivale ao shell, executa comandos na imagem e salva o resultado;
CMD: especifica qual comando executar no container, instrução deve ser usada para executar o software contido em sua imagem;
EXPOSE: coloca container a escutar na port especificada, instrução indica as portas nas quais um contêiner escuta as conexões;
COPY: copia ficheiros ou pastas para o imagem;
WORKDIR: indica working dir para os comandos RUN,COPY, etc

Build Image

docker build -t rhel8-apache:1.0 -f el.dockerfile .

Run

docker run -d --name web_www -p 8080:80 rhel8-apache:1.0

open web browser http://target-ip:8080/

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s