Aplicação completa de gestão de e-commerce – backend em Node.js, MySQL e Nginx.
129
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.
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
Content type
Image
Digest
sha256:916c254b2…
Size
50.1 MB
Last updated
29 days ago
docker pull thallesonofre/modelo_ecommerce:ecommerv1