Configurer Docker avec un Dockerfile et mettre à jour docker-compose.yml pour utiliser la construction d'image
This commit is contained in:
23
Dockerfile
Normal file
23
Dockerfile
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Utiliser une image de base officielle de Node.js
|
||||||
|
FROM node:latest
|
||||||
|
|
||||||
|
# Installer ffmpeg
|
||||||
|
RUN apt-get update && apt-get install -y ffmpeg
|
||||||
|
|
||||||
|
# Définir le répertoire de travail dans le conteneur
|
||||||
|
WORKDIR /backend
|
||||||
|
|
||||||
|
# Copier le fichier package.json et package-lock.json (si disponible)
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Installer les dépendances Node.js
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
# Copier le reste de l'application
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Exposer le port sur lequel l'application va tourner
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Commande pour démarrer l'application
|
||||||
|
CMD ["npm", "run", "dev"]
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
services:
|
services:
|
||||||
timelapse-api:
|
timelapse-api:
|
||||||
image: node:latest
|
build:
|
||||||
|
context: . # Chemin vers le répertoire contenant le Dockerfile
|
||||||
|
dockerfile: Dockerfile # Nom du Dockerfile, par défaut c'est "Dockerfile"
|
||||||
container_name: timelapse-api
|
container_name: timelapse-api
|
||||||
ports:
|
ports:
|
||||||
- "8053:3000"
|
- "8053:3000"
|
||||||
@@ -11,7 +13,6 @@ services:
|
|||||||
- NODE_VERSION=22.9.0
|
- NODE_VERSION=22.9.0
|
||||||
- YARN_VERSION=1.22.22
|
- YARN_VERSION=1.22.22
|
||||||
working_dir: /backend
|
working_dir: /backend
|
||||||
command: /bin/bash -c "npm install && npm run dev"
|
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- bridge
|
- bridge
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
const express = require('express');
|
import express from 'express';
|
||||||
|
import serverError from '../utils/serverError.js';
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const db = require('../db');
|
|
||||||
const serverError = require('../utils/serverError');
|
|
||||||
|
|
||||||
// Status du Projet :
|
// Status du Projet :
|
||||||
// 0 = En attente de capture
|
// 0 = En attente de capture
|
||||||
@@ -14,45 +13,6 @@ const maxInterval = 60; // Minutes
|
|||||||
var captureProjectID = -1;
|
var captureProjectID = -1;
|
||||||
var captureInterval = 0; // Minutes
|
var captureInterval = 0; // Minutes
|
||||||
|
|
||||||
function startProcedure(projectId, interval) {
|
|
||||||
console.log('Démarrage de la procédure de capture');
|
|
||||||
captureProjectID = projectId;
|
|
||||||
if (interval < minInterval) {
|
|
||||||
throw new Error('L\'intervalle de capture doit être supérieur ou égal à ' + minInterval + ' minutes.');
|
|
||||||
}
|
|
||||||
if (interval > maxInterval) {
|
|
||||||
throw new Error('L\'intervalle de capture doit être inférieur ou égal à ' + maxInterval + ' minutes.');
|
|
||||||
}
|
|
||||||
captureInterval = interval;
|
|
||||||
console.log('Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.');
|
|
||||||
return { message: 'Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.' };
|
|
||||||
}
|
|
||||||
|
|
||||||
function stopProcedure() {
|
|
||||||
console.log('Arrêt de la procédure de capture');
|
|
||||||
return { message: 'Procédure de capture arrêtée avec succès.' };
|
|
||||||
}
|
|
||||||
|
|
||||||
router.post('/procedure/start/', async (req, res) => {
|
|
||||||
const { projectId, interval } = req.body;
|
|
||||||
try {
|
|
||||||
const result = startProcedure(projectId, interval);
|
|
||||||
res.status(200).json(result);
|
|
||||||
} catch (err) {
|
|
||||||
serverError(res, err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
router.get('/procedure/stop/', async (req, res) => {
|
|
||||||
try {
|
|
||||||
const result = stopProcedure();
|
|
||||||
res.status(200).json(result);
|
|
||||||
} catch (err) {
|
|
||||||
serverError(res, err);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @swagger
|
* @swagger
|
||||||
* /procedure/start/:
|
* /procedure/start/:
|
||||||
@@ -82,10 +42,36 @@ router.get('/procedure/stop/', async (req, res) => {
|
|||||||
* properties:
|
* properties:
|
||||||
* message:
|
* message:
|
||||||
* type: string
|
* type: string
|
||||||
* example: Procédure de capture démarrée avec succès, projet ID: 1, interval: 10 minutes.
|
* example: "Procédure de capture démarrée avec succès, projet ID: 1, interval: 10 minutes."
|
||||||
* 500:
|
* 500:
|
||||||
* description: Internal server error.
|
* description: Internal server error.
|
||||||
*
|
*/
|
||||||
|
router.post('/procedure/start/', async (req, res) => {
|
||||||
|
const { projectId, interval } = req.body;
|
||||||
|
try {
|
||||||
|
const result = startProcedure(projectId, interval);
|
||||||
|
res.status(200).json(result);
|
||||||
|
} catch (err) {
|
||||||
|
serverError(res, err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function startProcedure(projectId, interval) {
|
||||||
|
console.log('Démarrage de la procédure de capture');
|
||||||
|
captureProjectID = projectId;
|
||||||
|
if (interval < minInterval) {
|
||||||
|
throw new Error('L\'intervalle de capture doit être supérieur ou égal à ' + minInterval + ' minutes.');
|
||||||
|
}
|
||||||
|
if (interval > maxInterval) {
|
||||||
|
throw new Error('L\'intervalle de capture doit être inférieur ou égal à ' + maxInterval + ' minutes.');
|
||||||
|
}
|
||||||
|
captureInterval = interval;
|
||||||
|
console.log('Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.');
|
||||||
|
return { message: 'Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.' };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @swagger
|
||||||
* /procedure/stop/:
|
* /procedure/stop/:
|
||||||
* get:
|
* get:
|
||||||
* summary: Stop the capture procedure
|
* summary: Stop the capture procedure
|
||||||
@@ -100,9 +86,22 @@ router.get('/procedure/stop/', async (req, res) => {
|
|||||||
* properties:
|
* properties:
|
||||||
* message:
|
* message:
|
||||||
* type: string
|
* type: string
|
||||||
* example: Procédure de capture arrêtée avec succès.
|
* example: "Procédure de capture arrêtée avec succès."
|
||||||
* 500:
|
* 500:
|
||||||
* description: Internal server error.
|
* description: Internal server error.
|
||||||
*/
|
*/
|
||||||
|
router.get('/procedure/stop/', async (req, res) => {
|
||||||
|
try {
|
||||||
|
const result = stopProcedure();
|
||||||
|
res.status(200).json(result);
|
||||||
|
} catch (err) {
|
||||||
|
serverError(res, err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function stopProcedure() {
|
||||||
|
console.log('Arrêt de la procédure de capture');
|
||||||
|
return { message: 'Procédure de capture arrêtée avec succès.' };
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
|||||||
Reference in New Issue
Block a user