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:
|
||||
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
|
||||
ports:
|
||||
- "8053:3000"
|
||||
@@ -11,7 +13,6 @@ services:
|
||||
- NODE_VERSION=22.9.0
|
||||
- YARN_VERSION=1.22.22
|
||||
working_dir: /backend
|
||||
command: /bin/bash -c "npm install && npm run dev"
|
||||
restart: always
|
||||
networks:
|
||||
- bridge
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
const express = require('express');
|
||||
import express from 'express';
|
||||
import serverError from '../utils/serverError.js';
|
||||
const router = express.Router();
|
||||
const db = require('../db');
|
||||
const serverError = require('../utils/serverError');
|
||||
|
||||
// Status du Projet :
|
||||
// 0 = En attente de capture
|
||||
@@ -14,45 +13,6 @@ const maxInterval = 60; // Minutes
|
||||
var captureProjectID = -1;
|
||||
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
|
||||
* /procedure/start/:
|
||||
@@ -82,10 +42,36 @@ router.get('/procedure/stop/', async (req, res) => {
|
||||
* properties:
|
||||
* message:
|
||||
* 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:
|
||||
* 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/:
|
||||
* get:
|
||||
* summary: Stop the capture procedure
|
||||
@@ -100,9 +86,22 @@ router.get('/procedure/stop/', async (req, res) => {
|
||||
* properties:
|
||||
* message:
|
||||
* 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:
|
||||
* 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;
|
||||
|
||||
Reference in New Issue
Block a user