Docker: Containers em Produção

Docker revolucionou a forma como desenvolvemos e implantamos aplicações, oferecendo ambientes consistentes e isolados.

Dockerfile Básico

# Dockerfile
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

Docker Compose

# docker-compose.yml
version: '3.8'

services:
    app:
        build: .
        ports:
            - "3000:3000"
        volumes:
            - .:/app
        depends_on:
            - db
    
    db:
        image: postgres:15-alpine
        environment:
            POSTGRES_DB: myapp
            POSTGRES_USER: user
            POSTGRES_PASSWORD: password
        volumes:
            - postgres_data:/var/lib/postgresql/data

volumes:
    postgres_data:

Comandos Úteis

# Build
docker build -t myapp .

# Run
docker run -p 3000:3000 myapp

# Compose
docker-compose up -d
docker-compose down