Compare commits
2 Commits
66c72f46a2
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 0d91d559dc | |||
| b5bc405771 |
11
README.md
@ -1,6 +1,17 @@
|
||||
|
||||
# ServiceManager
|
||||
|
||||
## Structure
|
||||
|
||||
- `app/`: frontend + backend + infrastructure Docker de l'application.
|
||||
- `node/`: code et artefacts du node (CLI/service).
|
||||
|
||||
## Lancer l'application
|
||||
|
||||
```bash
|
||||
docker compose -f app/docker-compose.yml up --build
|
||||
```
|
||||
|
||||
Monitoring your services from different machine on a same place.
|
||||
|
||||
|
||||
|
||||
33
app/Dockerfile
Normal file
@ -0,0 +1,33 @@
|
||||
FROM --platform=$BUILDPLATFORM node:22-alpine AS frontend-builder
|
||||
WORKDIR /frontend
|
||||
COPY frontend/package.json frontend/package-lock.json ./
|
||||
RUN npm ci --include=optional --legacy-peer-deps
|
||||
COPY frontend/ .
|
||||
RUN npm run build
|
||||
|
||||
FROM golang:1.24 AS backend-builder
|
||||
WORKDIR /backend
|
||||
COPY backend/go.mod backend/go.sum ./
|
||||
RUN go mod download
|
||||
COPY backend/ .
|
||||
RUN go mod tidy
|
||||
RUN go build -o backend .
|
||||
|
||||
FROM debian:bookworm-slim
|
||||
WORKDIR /app
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ca-certificates nginx \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& rm -rf /var/www/html/*
|
||||
|
||||
COPY --from=frontend-builder /frontend/dist /usr/share/nginx/html
|
||||
COPY --from=backend-builder /backend/backend /app/backend
|
||||
COPY --from=backend-builder /backend/sql /app/sql
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
COPY docker/start.sh /start.sh
|
||||
|
||||
RUN chmod +x /start.sh
|
||||
|
||||
EXPOSE 80
|
||||
CMD ["/start.sh"]
|
||||
@ -5,43 +5,21 @@ services:
|
||||
- ./backend/migrations:/migrations
|
||||
networks:
|
||||
- app-net
|
||||
# On attend que la DB soit prête pour lancer les migrations
|
||||
command: -path=/migrations/ -database "postgres://admin:admin@db:5432/monitoring?sslmode=disable" up
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
backend:
|
||||
build: ./backend
|
||||
container_name: backend
|
||||
app:
|
||||
build: .
|
||||
container_name: sm-app
|
||||
ports:
|
||||
- "8082:80"
|
||||
networks:
|
||||
- app-net
|
||||
depends_on:
|
||||
migrate:
|
||||
condition: service_completed_successfully
|
||||
|
||||
frontend:
|
||||
build: ./frontend
|
||||
container_name: frontend
|
||||
networks:
|
||||
- app-net
|
||||
depends_on:
|
||||
- backend
|
||||
|
||||
# node:
|
||||
# build: ./node
|
||||
# container_name: node
|
||||
# environment:
|
||||
# - HOST_IP=192.168.1.75
|
||||
# ports:
|
||||
# - "8081:8081"
|
||||
# networks:
|
||||
# - app-net
|
||||
# volumes:
|
||||
# - node-data:/app
|
||||
# depends_on:
|
||||
# - backend
|
||||
# restart: unless-stopped
|
||||
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
container_name: db
|
||||
@ -61,20 +39,6 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
container_name: monitor-proxy
|
||||
ports:
|
||||
- "8082:80"
|
||||
- "444:443"
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
depends_on:
|
||||
- frontend
|
||||
- backend
|
||||
networks:
|
||||
- app-net
|
||||
|
||||
networks:
|
||||
app-net:
|
||||
driver: bridge
|
||||
26
app/docker/start.sh
Normal file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
/app/backend &
|
||||
backend_pid=$!
|
||||
|
||||
term_handler() {
|
||||
kill -TERM "$backend_pid" 2>/dev/null || true
|
||||
wait "$backend_pid" 2>/dev/null || true
|
||||
exit 0
|
||||
}
|
||||
|
||||
trap term_handler INT TERM
|
||||
|
||||
nginx -g 'daemon off;' &
|
||||
nginx_pid=$!
|
||||
|
||||
while kill -0 "$backend_pid" 2>/dev/null && kill -0 "$nginx_pid" 2>/dev/null; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
kill -TERM "$backend_pid" 2>/dev/null || true
|
||||
kill -TERM "$nginx_pid" 2>/dev/null || true
|
||||
wait "$backend_pid" 2>/dev/null || true
|
||||
wait "$nginx_pid" 2>/dev/null || true
|
||||
exit 1
|
||||
@ -1,10 +1,10 @@
|
||||
FROM node:22-alpine AS builder
|
||||
FROM --platform=$BUILDPLATFORM node:22-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json package-lock.json ./
|
||||
|
||||
RUN npm install --legacy-peer-deps
|
||||
RUN npm ci --include=optional --legacy-peer-deps
|
||||
|
||||
COPY . .
|
||||
|
||||
@ -19,4 +19,3 @@ COPY --from=builder /app/dist /usr/share/nginx/html
|
||||
EXPOSE 80
|
||||
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
|
||||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |