User Tools

Site Tools


wiki:docker:guia_comandos_docker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
wiki:docker:guia_comandos_docker [2026/01/22 10:14] Wiki Administratorwiki:docker:guia_comandos_docker [2026/01/28 12:59] (current) Wiki Administrator
Line 690: Line 690:
 docker-compose down -v --remove-orphans docker-compose down -v --remove-orphans
 </code> </code>
 +
 +
 +==== 3.1.1. EXEMPLO PRÁTICO: STACK WEB COM NGINX, NODE.JS E REDIS ====
 +
 +A seguir, um exemplo prático de um arquivo `docker-compose.yml` que orquestra uma aplicação web simples composta por três serviços:
 +
 +*   **`webapp`**: Um serviço Node.js que representa a aplicação principal.
 +*   **`database`**: Um serviço de banco de dados PostgreSQL.
 +*   **`cache`**: Um serviço de cache Redis.
 +
 +Este exemplo demonstra conceitos essenciais como a definição de serviços, o uso de imagens, o mapeamento de portas, a configuração de volumes para persistência de dados e a comunicação entre contêineres através de redes customizadas.
 +
 +=== Exemplo de `docker-compose.yml` ===
 +
 +<code yaml>
 +version: '3.8'
 +
 +services:
 +  webapp:
 +    build: .
 +    ports:
 +      - "8080:3000"
 +    volumes:
 +      - .:/app
 +      - /app/node_modules
 +    depends_on:
 +      - database
 +      - cache
 +    environment:
 +      - DATABASE_URL=postgres://user:password@database:5432/mydb
 +      - CACHE_URL=redis://cache:6379
 +
 +  database:
 +    image: postgres:13-alpine
 +    volumes:
 +      - db_data:/var/lib/postgresql/data
 +    environment:
 +      - POSTGRES_DB=mydb
 +      - POSTGRES_USER=user
 +      - POSTGRES_PASSWORD=password
 +
 +  cache:
 +    image: redis:6-alpine
 +
 +volumes:
 +  db_data:
 +
 +networks:
 +  default:
 +    driver: bridge
 +</code>
 +
 +=== Explicação Detalhada ===
 +
 +*   **`version: '3.8'`**: Define a versão do formato do arquivo Docker Compose. É importante para garantir a compatibilidade e o acesso a funcionalidades específicas.
 +
 +*   **`services`**: Seção principal onde todos os contêineres (serviços) são definidos.
 +
 +*   **`webapp`**:
 +    *   **`build: .`**: Constrói a imagem para este serviço a partir do `Dockerfile` localizado no diretório atual (`.`).
 +    *   **`ports: ["8080:3000"]`**: Mapeia a porta 8080 do host para a porta 3000 do contêiner, permitindo o acesso à aplicação via `http://localhost:8080`.
 +    *   **`volumes`**: Define dois tipos de volumes:
 +        *   `.:/app`: Monta o diretório atual do host no diretório `/app` do contêiner, permitindo o desenvolvimento com hot-reload.
 +        *   `/app/node_modules`: Um volume anônimo para evitar que a pasta `node_modules` do host sobrescreva a do contêiner.
 +    *   **`depends_on`**: Garante que os serviços `database` e `cache` sejam iniciados antes do `webapp`.
 +    *   **`environment`**: Define variáveis de ambiente para a aplicação, como as URLs de conexão com o banco de dados e o cache.
 +
 +*   **`database`**:
 +    *   **`image: postgres:13-alpine`**: Utiliza uma imagem oficial do PostgreSQL a partir do Docker Hub.
 +    *   **`volumes: ["db_data:/var/lib/postgresql/data"]`**: Cria um volume nomeado `db_data` para persistir os dados do PostgreSQL, garantindo que os dados não sejam perdidos quando o contêiner for removido.
 +    *   **`environment`**: Configura as credenciais e o nome do banco de dados.
 +
 +*   **`cache`**:
 +    *   **`image: redis:6-alpine`**: Utiliza uma imagem oficial do Redis.
 +
 +*   **`volumes`**:
 +    *   **`db_data:`**: Declara o volume nomeado `db_data` que será gerenciado pelo Docker.
 +
 +*   **`networks`**:
 +    *   **`default`**: Embora não seja estritamente necessário (o Docker Compose cria uma rede padrão), esta seção permite customizar a rede, como o driver a ser utilizado.
 +
 +=== Como Utilizar ===
 +
 +1.  **Crie um `Dockerfile`** para a sua aplicação Node.js no mesmo diretório do `docker-compose.yml`.
 +2.  **Salve o conteúdo acima** em um arquivo chamado `docker-compose.yml`.
 +3.  **Execute o comando** `docker-compose up -d` para iniciar todos os serviços em segundo plano.
 +4.  **Acesse sua aplicação** em `http://localhost:8080`.
  
wiki/docker/guia_comandos_docker.1769087673.txt.gz · Last modified: by Wiki Administrator