3.1 Criando o Dockerfile para o frontend (ReactJS)
Neste ponto, vamos criar um Dockerfile para cada um dos três serviços do nosso aplicativo multi-container: o frontend em ReactJS, o backend em Python (Flask) e o banco de dados PostgreSQL. O Dockerfile define as instruções para criar a imagem Docker para cada serviço.
Crie o arquivo Dockerfile no diretório frontend:
cd frontend
touch Dockerfile
Conteúdo do Dockerfile para o frontend:
# Usando a imagem base node
FROM node:14
# Configurando o diretório de trabalho
WORKDIR /app
# Copiando package.json e package-lock.json para instalar as dependências
COPY package*.json ./
# Instalando as dependências
RUN npm install
# Copiando os outros arquivos do projeto
COPY . .
# Configurando a porta 3000
EXPOSE 3000
# Inicializando o app
CMD ["npm", "start"]
Este Dockerfile executa os seguintes passos:
- Usa a imagem base
node:14
. - Configura o diretório de trabalho
/app
. - Copia os arquivos
package.json
epackage-lock.json
. - Instala as dependências com
npm install
. - Copia todos os arquivos do projeto para o diretório de trabalho.
- Abre a porta
3000
para acessar o app. - Inicializa o app usando
npm start
.
3.2 Criando um Dockerfile para o backend (Flask)
Cria o arquivo Dockerfile no diretório backend:
cd backend
touch Dockerfile
Conteúdo do Dockerfile para o backend:
# Usando a imagem base do python
FROM python:3.12
# Configurando o diretório de trabalho
WORKDIR /app
# Copiando o requirements.txt pra instalar as dependências
COPY requirements.txt ./
# Instalando as dependências
RUN pip install --no-cache-dir -r requirements.txt
# Copiando os outros arquivos do projeto
COPY . .
# Definindo a porta 5000
EXPOSE 5000
# Rodando o app
CMD ["python", "run.py"]
Esse Dockerfile faz as seguintes ações:
- Usa a imagem base
python:3.12
. - Configura o diretório de trabalho
/app
. - Copia o arquivo
requirements.txt
. - Instala as dependências usando
pip install
. - Copia todos os arquivos do projeto para o diretório de trabalho.
- Abre a porta
5000
para acessar o app. - Roda o app usando
python run.py
.
3.3 Criando um Dockerfile para o banco de dados (PostgreSQL)
Para o banco de dados PostgreSQL, a gente vai usar a imagem oficial, então criar um Dockerfile próprio não é necessário. Em vez disso, a gente vai configurar o PostgreSQL usando o docker-compose.yml
.
3.4 Build e teste das imagens do Docker
Depois de criar o Dockerfile para o frontend e backend, é importante testar o build deles.
Build da imagem Docker para o frontend:
cd frontend
docker build -t task_management_frontend .
Build da imagem Docker para o backend:
cd ../backend
docker build -t task_management_backend .
Verificando o funcionamento dos containers:
Rodando o container do frontend:
docker run -p 3000:3000 task_management_frontend
Rodando o container do backend:
docker run -p 5000:5000 task_management_backend
Acesse o endereço http://localhost:3000 para verificar o frontend e http://localhost:5000 para verificar o backend.
GO TO FULL VERSION