7th edition docker ok
This commit is contained in:
parent
c945b24cdb
commit
652d076065
5 changed files with 73 additions and 54 deletions
33
docker-compose.yml
Normal file
33
docker-compose.yml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
version: "3.9"
|
||||
|
||||
services:
|
||||
backend:
|
||||
build: ./server/backend
|
||||
container_name: backend
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- MONGO_URI=mongodb://root:example@192.168.1.3:27017/myapphttps?authSource=admin
|
||||
- JWT_SECRET=master66
|
||||
- PORT=11001
|
||||
ports:
|
||||
- "11001:11001"
|
||||
volumes:
|
||||
- /home/nvme/dockerdata/myapps/icons:/app/uploads
|
||||
|
||||
frontend_server:
|
||||
image: nginx:alpine
|
||||
container_name: frontend_server
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "11003:80"
|
||||
volumes:
|
||||
- ./server/frontend:/usr/share/nginx/html:ro
|
||||
|
||||
app_static:
|
||||
image: nginx:alpine
|
||||
container_name: app_static
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "11002:80"
|
||||
volumes:
|
||||
- ./app:/usr/share/nginx/html:ro
|
||||
2
docker_run.sh
Executable file
2
docker_run.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
sudo docker compose up -d
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
FROM node:20-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json package-lock.json* ./
|
||||
RUN npm install --production
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN mkdir -p uploads
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD ["node", "index.js"]
|
||||
38
server/backend/Dockerfile
Normal file
38
server/backend/Dockerfile
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# -----------------------------
|
||||
# 1) Build stage
|
||||
# -----------------------------
|
||||
FROM node:20-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copio solo package.json per sfruttare la cache Docker
|
||||
COPY package*.json ./
|
||||
|
||||
# Installa solo le dipendenze necessarie
|
||||
RUN npm ci --only=production
|
||||
|
||||
# Copio il resto del codice
|
||||
COPY . .
|
||||
|
||||
# -----------------------------
|
||||
# 2) Runtime stage
|
||||
# -----------------------------
|
||||
FROM node:20-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copio solo node_modules dal builder
|
||||
COPY --from=builder /app/node_modules ./node_modules
|
||||
|
||||
# Copio il codice applicativo
|
||||
COPY --from=builder /app ./
|
||||
|
||||
# Utente non-root per sicurezza
|
||||
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
|
||||
USER appuser
|
||||
|
||||
# Porta interna del backend (3000)
|
||||
EXPOSE 11001
|
||||
|
||||
# Avvio del server
|
||||
CMD ["node", "index.js"]
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
version: "3.9"
|
||||
|
||||
services:
|
||||
mongo:
|
||||
image: mongo:7
|
||||
container_name: mongo
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes:
|
||||
- mongo_data:/data/db
|
||||
|
||||
api:
|
||||
build: ./server
|
||||
container_name: api
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- MONGO_URI=mongodb://mongo:27017/mydb
|
||||
- JWT_SECRET=supersegreto-cambialo
|
||||
- PORT=3000
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- ./server/uploads:/app/uploads
|
||||
depends_on:
|
||||
- mongo
|
||||
|
||||
frontend:
|
||||
image: nginx:alpine
|
||||
container_name: frontend
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:80"
|
||||
volumes:
|
||||
- ./frontend:/usr/share/nginx/html:ro
|
||||
depends_on:
|
||||
- api
|
||||
|
||||
volumes:
|
||||
mongo_data:
|
||||
Loading…
Reference in a new issue