Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/renatoelho/dockerfile
Um Dockerfile é um arquivo de configuração usado no Docker, uma plataforma de conteinerização que permite empacotar, distribuir e executar aplicativos em contêineres leves e isolados. O Dockerfile é usado para definir como um contêiner deve ser construído.
https://github.com/renatoelho/dockerfile
docker docker-compose dockerfile
Last synced: 13 days ago
JSON representation
Um Dockerfile é um arquivo de configuração usado no Docker, uma plataforma de conteinerização que permite empacotar, distribuir e executar aplicativos em contêineres leves e isolados. O Dockerfile é usado para definir como um contêiner deve ser construído.
- Host: GitHub
- URL: https://github.com/renatoelho/dockerfile
- Owner: Renatoelho
- License: mit
- Created: 2023-09-01T10:32:41.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-01T11:06:22.000Z (over 1 year ago)
- Last Synced: 2024-11-25T20:17:47.387Z (2 months ago)
- Topics: docker, docker-compose, dockerfile
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Primeiros passos com Dockerfile
Um Dockerfile é um arquivo de configuração usado no Docker, uma plataforma de conteinerização que permite empacotar, distribuir e executar aplicativos em contêineres leves e isolados. O Dockerfile é usado para definir como um contêiner deve ser construído. Ele contém uma lista de instruções que o Docker segue para criar uma imagem do contêiner.
### Aqui estão algumas das instruções comuns que você pode encontrar em um Dockerfile:
***FROM:*** Esta é a primeira instrução em um Dockerfile e especifica a imagem base a ser usada como ponto de partida. Todas as instruções subsequentes serão aplicadas a partir desta imagem base. Por exemplo, você pode usar FROM ubuntu:20.04 para iniciar com uma imagem base do Ubuntu 20.04.
***RUN:*** Esta instrução permite que você execute comandos dentro do contêiner durante a construção da imagem. Por exemplo, você pode usar RUN apt-get update && apt-get install -y apache2 para instalar o servidor web Apache durante a construção da imagem.
***COPY*** e ***ADD:*** Essas instruções são usadas para copiar arquivos e diretórios do sistema de arquivos do host para dentro do contêiner. O COPY é usado para copiar arquivos do host, enquanto o ADD pode fazer isso e também suporta URLs e descompactação de arquivos.
***WORKDIR:*** Define o diretório de trabalho dentro do contêiner onde comandos subsequentes serão executados. Isso ajuda a manter o contexto dos comandos organizado.
***EXPOSE:*** Esta instrução especifica as portas em que o contêiner estará escutando durante a execução. No entanto, ela não publica automaticamente as portas para o host, isso deve ser feito explicitamente ao iniciar o contêiner.
***CMD*** e ***ENTRYPOINT:*** Essas instruções definem o comando padrão que será executado quando o contêiner for iniciado. A diferença principal é que o CMD pode ser substituído quando você inicia o contêiner com comandos específicos, enquanto o ENTRYPOINT não pode ser substituído.
***ENV:*** Essa instrução define variáveis de ambiente dentro do contêiner, o que é útil para configurar parâmetros de aplicativos.
***LABEL:*** Permite adicionar metadados descritivos à imagem, como informações de versão, autor, etc.
***VOLUME:*** Especifica os pontos de montagem para volumes externos que podem ser anexados ao contêiner durante a execução.
Depois de criar um [***Dockerfile***](dockerfile), você pode usar o comando docker build para criar uma imagem a partir dele. Em seguida, você pode usar essa imagem para criar e executar contêineres isolados que executam seu aplicativo ou serviço.
O ***Dockerfile*** é uma parte fundamental da abordagem de ***conteinerização***, permitindo a criação de ambientes consistentes e isolados para seus aplicativos, facilitando a implantação e a escalabilidade.
### Arquivo Dockerfile
```bash
# Imagem base do nosso Dockerfile.
FROM ubuntu:20.04# Anotações para adicionar aos metadados da nossa imagem.
LABEL maintainer="Renato coelho "
LABEL version="0.0.1"
LABEL description="Está é uma imagem de exemplo."# Definindo o bash como SHELL padrão.
SHELL ["/bin/bash", "-c"]# Criando e configurando o usuário 'user01' para nossa imagem.
RUN useradd -ms /bin/bash user01 -G sudo && \
passwd -d user01 && \
mkdir -p /home/user01/app# Definindo o diretório padrão da nossa imagem.
WORKDIR /home/user01/app# Atualizando o APT e instalando alguns softwares.
RUN apt update && \
apt install curl \
wget \
nano \
zip \
unzip \
sudo -y# Copiando o conteúdo do diretório 'app' para a imagem.
COPY app/ .# Copiando um arquivo direto da WEB para o diretório 'app'.
ADD https://renato.tec.br/wp-content/uploads/2020/07/Foto-Renato-FULL-Tratadav4.jpg .# Atribuindo a propriedade do diretório 'app' ao usuário 'user01'.
RUN chown -R user01:user01 /home/user01/app# Adicionando a variável TERM as variáveis de ambiente da imagem.
ENV TERM=xterm-256color# Definindo o usuário padrão da nossa imagem.
USER user01# Comando para deixar o contêiner em execução, após sua ativação.
ENTRYPOINT tail -f /dev/null
```### Exemplo de customização de uma imagem
+ Clonando o repositório:
```bash
git clone https://github.com/Renatoelho/dockerfile.git dockerfile
```+ Acessando o repositório:
```bash
cd dockerfile/
```+ Construíndo a imagem:
```bash
docker build -f dockerfile -t imagem-base:0.0.1 .
```+ Criando um contêiner a partir da imagem:
```bash
docker run --rm -d --name=servidor_app --hostname=servidor_app imagem-base:0.0.1
```+ Acessando o contêiner:
```bash
docker exec -it servidor_app bash
```### Referências:
Dockerfile reference, ***Docker Docs***. Disponível em: \<[https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/)\>. Acesso em: 01 set. de 2023.