Implantando um Servidor Web com Docker
Criando um Dockerfile
Para implantar um servidor web usando Docker, primeiro precisa criar um Dockerfile. Um Dockerfile é um ficheiro de texto que contém as instruções para construir uma imagem Docker. Aqui está um exemplo de Dockerfile para um servidor web Nginx simples:
## Usar a imagem oficial do Nginx como imagem base
FROM nginx:latest
## Copiar o ficheiro de configuração padrão do Nginx
COPY default.conf /etc/nginx/conf.d/default.conf
## Copiar o código da aplicação web para o contentor
COPY app/ /usr/share/nginx/html/
## Expor a porta 80 para tráfego HTTP
EXPOSE 80
## Iniciar o servidor Nginx
CMD ["nginx", "-g", "daemon off;"]
Este Dockerfile:
- Usa a imagem oficial do Nginx como imagem base.
- Copia o ficheiro de configuração padrão do Nginx para o contentor.
- Copia o código da aplicação web para o diretório raiz web do contentor.
- Expoe a porta 80 para tráfego HTTP.
- Inicia o servidor Nginx.
Construindo e Executando a Imagem Docker
Depois de ter o Dockerfile, pode construir a imagem Docker usando o comando docker build:
## Construir a imagem Docker
docker build -t my-nginx-server .
Este comando constrói a imagem Docker com a etiqueta my-nginx-server usando o Dockerfile no diretório atual.
Após a construção da imagem, pode executar um contentor baseado na imagem usando o comando docker run:
## Executar o contentor Docker
docker run -d -p 80:80 --name my-nginx-server my-nginx-server
Este comando:
- Executa o contentor em modo desacoplado (
-d).
- Mapeia a porta 80 no hospedeiro para a porta 80 no contentor (
-p 80:80).
- Atribui o nome
my-nginx-server ao contentor.
- Usa a imagem
my-nginx-server para criar o contentor.
Escalonamento e Equilíbrio de Carga
Para escalar o seu servidor web, pode executar múltiplas instâncias do contentor Docker e usar um balanceador de carga para distribuir o tráfego pelas instâncias. Aqui está um exemplo de como pode fazer isto usando Docker Compose:
version: "3"
services:
web:
build: .
ports:
- 80:80
deploy:
replicas: 3
load-balancer:
image: nginx:latest
ports:
- 8080:80
depends_on:
- web
configs:
- source: nginx-config
target: /etc/nginx/conf.d/default.conf
configs:
nginx-config:
file: ./nginx.conf
Este ficheiro Docker Compose:
- Constrói o serviço
web usando o Dockerfile no diretório atual.
- Implanta três réplicas do serviço
web.
- Executa um serviço de balanceador de carga Nginx que ouve na porta 8080 e encaminha o tráfego para as instâncias do serviço
web.
- Monta um ficheiro de configuração Nginx personalizado para o contentor do balanceador de carga.
Usando Docker Compose e balanceamento de carga, pode facilmente escalar o seu servidor web e garantir alta disponibilidade e tolerância a falhas.