Sign inSign up

thallesonofre/modelo_ecommerce

By thallesonofre

Updated 29 days ago

Aplicação completa de gestão de e-commerce – backend em Node.js, MySQL e Nginx.

Image
Languages & frameworks
0

129

thallesonofre/modelo_ecommerce repository overview

Modelo de E-commerce - Node.js & MySQL

Esta imagem contém a aplicação Node.js (Express + EJS) para o modelo de Loja Online (E-commerce). A aplicação necessita de um banco de dados MySQL para persistência e, opcionalmente, de um servidor Nginx como proxy reverso para balanceamento.


1. Como baixar a imagem (Pull)

Para fazer o download da imagem diretamente para sua máquina local:

docker pull thallesonofre/modelo_ecommerce:ecommerv1

2. Como executar o projeto (Recomendado via Docker Compose)
Como esta aplicação depende de um banco de dados MySQL para funcionar corretamente, a forma recomendada e mais simples de executá-la com todas as suas dependências (Banco e Proxy Reverso Nginx) é utilizando o Docker Compose.

Passo a Passo:
Crie uma pasta vazia em seu computador.
Dentro dessa pasta, crie um arquivo com o nome docker-compose.yml e cole o código abaixo:

version: '3.8'

services:
  db:
    image: mysql:8.0
    container_name: loja_online_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_password_123
      MYSQL_DATABASE: lojaon
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot_password_123"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s

  app:
    image: thallesonofre/modelo_ecommerce:ecommerv1
    build: .
    container_name: loja_online_app
    restart: always
    environment:
      PORT: 3000
      DB_HOST: db
      DB_USER: root
      DB_PASS: root_password_123
      DB_NAME: lojaon
      SESSION_SECRET: lojaonline_secret_key_123!
    volumes:
      - uploads_data:/usr/src/app/public/uploads
    depends_on:
      db:
        condition: service_healthy
    command: sh -c "until nc -z -v -w30 db 3306; do echo 'Aguardando banco de dados...'; sleep 2; done; node scripts/seed.js && node index.js"

  nginx:
    image: nginx:alpine
    container_name: loja_online_nginx
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app

volumes:
  db_data:
    name: lojaonline_mysql_data
  uploads_data:
    name: lojaonline_uploads_data

3. Na mesma pasta, crie o arquivo de configuração do Nginx chamado nginx.conf e cole o seguinte conteúdo:

server {
    listen 80;
    server_name localhost;
    client_max_body_size 20M;

    location / {
        proxy_pass http://app:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

4. Abra o terminal na pasta em que criou os arquivos e execute:

docker compose up -d

5. Como acessar o projeto no navegador
Assim que os containers estiverem de pé e saudáveis, basta abrir o seu navegador de preferência e digitar o endereço:

👉 http://localhost


Executando apenas a imagem da aplicação (Avançado)
Caso você queira rodar apenas o container da aplicação Node separadamente (assumindo que você já tenha um banco MySQL rodando na mesma rede Docker):

docker run -d \
  --name minha_loja_app \
  -p 3000:3000 \
  -e DB_HOST=nome_ou_ip_do_banco \
  -e DB_USER=seu_usuario_mysql \
  -e DB_PASS=sua_senha_mysql \
  -e DB_NAME=lojaon \
  thallesonofre/modelo_ecommerce:ecommerv1

Tag summary

Content type

Image

Digest

sha256:916c254b2

Size

50.1 MB

Last updated

29 days ago

docker pull thallesonofre/modelo_ecommerce:ecommerv1