Learn Docker Help

Lab 2: Configuração do Ambiente de Desenvolvimento 🛠️

╔═══════════════════════════════════════════════════════════╗ ║ SETUP STATUS: CONFIGURANDO... ║ ║ DIFICULDADE: ★★★☆☆ ║ ║ TEMPO ESTIMADO: 45 minutos ║ ║ WAIFU ASSISTANT: Setup-chan ║ ╚═══════════════════════════════════════════════════════════╝

Verificação do Ambiente 🔍

Requisitos Mínimos

  • Docker Engine 20.10+

  • Docker Compose v2.0+

  • 8GB RAM

  • 50GB Espaço em Disco

  • Git instalado

Verificação de Dependências

# Verifique versões docker --version docker compose version git --version # Verifique recursos disponíveis docker info

Estrutura do Projeto 📁

Setup Inicial

# Clone o repositório base git clone https://github.com/seu-usuario/docker-lab-2 cd docker-lab-2 # Crie a estrutura de diretórios mkdir -p {frontend,backend,database,config}

Arquivos Base

1. docker-compose.yml

version: '3.8' services: frontend: build: context: ./frontend dockerfile: Dockerfile target: development volumes: - ./frontend:/app - /app/node_modules ports: - "3000:3000" environment: - NODE_ENV=development depends_on: - backend backend: build: context: ./backend dockerfile: Dockerfile target: development volumes: - ./backend:/app - /app/__pycache__ ports: - "5000:5000" environment: - FLASK_ENV=development - DB_HOST=db depends_on: - db db: image: postgres:13-alpine volumes: - pgdata:/var/lib/postgresql/data - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql environment: - POSTGRES_PASSWORD=devpassword - POSTGRES_DB=devdb volumes: pgdata:

2. frontend/Dockerfile

# Estágio de desenvolvimento FROM node:18-alpine as development WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["npm", "run", "dev"] # Estágio de produção FROM node:18-alpine as production WORKDIR /app COPY package*.json ./ RUN npm install --production COPY . . RUN npm run build CMD ["npm", "start"]

3. backend/Dockerfile

# Estágio de desenvolvimento FROM python:3.9-slim as development WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["flask", "run", "--host=0.0.0.0", "--debug"] # Estágio de produção FROM python:3.9-slim as production WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["gunicorn", "app:app"]

Configuração do Ambiente 🔧

1. Variáveis de Ambiente

# Crie arquivo .env na raiz cat > .env << EOL NODE_ENV=development FLASK_ENV=development DB_HOST=db DB_PORT=5432 DB_NAME=devdb DB_USER=postgres DB_PASS=devpassword EOL

2. Networks

# Crie network para desenvolvimento docker network create dev-network # Verifique a criação docker network ls

3. Volumes

# Crie volumes necessários docker volume create pgdata # Verifique volumes docker volume ls

Setup de Desenvolvimento 💻

Visual Studio Code

  1. Extensões Recomendadas

    • Docker

    • Remote Containers

    • Python

    • Node.js

    • ESLint

    • Prettier

Hot Reload

# Frontend (package.json) { "scripts": { "dev": "vite --host" } } # Backend (requirements.txt) flask-debug==0.4.3 python-dotenv==0.19.0

Verificação do Setup ✅

Teste de Integração

# Build dos containers docker compose build # Inicie os serviços docker compose up -d # Verifique os logs docker compose logs -f

Health Check

# Verifique status dos containers docker compose ps # Teste conexões curl http://localhost:3000 curl http://localhost:5000/health

Setup-chan Tips 💡

Troubleshooting 🔍

Problemas Comuns

1. Permissões de Volume

# Corrija permissões sudo chown -R $USER:$USER . # Verifique montagem docker compose exec frontend ls -la /app

2. Conexão com Database

# Teste conexão docker compose exec backend python -c "import psycopg2; conn=psycopg2.connect(host='db', dbname='devdb', user='postgres', password='devpassword')"

Próximos Passos 🎯

  1. Lab 2 Exercise

  2. Docker Compose Deep Dive

  3. Development Best Practices

Recursos Adicionais 📚

16 abril 2025