fixed docker issues
This commit is contained in:
parent
9af67daf3e
commit
d13a3bbc9c
11 changed files with 43 additions and 171 deletions
11
Dockerfile
11
Dockerfile
|
|
@ -6,8 +6,10 @@ WORKDIR /app
|
|||
COPY backend/src/requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copier le code
|
||||
COPY backend/src /app/backend/src
|
||||
# Copier le code backend
|
||||
COPY backend/src/ /app/
|
||||
|
||||
# Copier le frontend
|
||||
COPY frontend /app/frontend
|
||||
COPY components /app/components
|
||||
COPY img /app/img
|
||||
|
|
@ -18,4 +20,7 @@ COPY vite.config.ts /app/
|
|||
# Port Flask
|
||||
EXPOSE 5000
|
||||
|
||||
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "backend.src.api:app"]
|
||||
# Définir PYTHONPATH pour que les imports relatifs fonctionnent
|
||||
ENV PYTHONPATH=/app:$PYTHONPATH
|
||||
|
||||
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "api:app"]
|
||||
|
|
|
|||
0
backend/src/game/__init__.py
Normal file
0
backend/src/game/__init__.py
Normal file
|
|
@ -1,3 +1,4 @@
|
|||
from __future__ import annotations
|
||||
from .hand import *
|
||||
from .wall import *
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from __future__ import annotations
|
||||
from .tile import *
|
||||
|
||||
import random as rd
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from __future__ import annotations
|
||||
from game.error import *
|
||||
from game.value import *
|
||||
from functools import total_ordering
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from __future__ import annotations
|
||||
from .tile import *
|
||||
from .hand import *
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class Hand {
|
|||
this.position = options.position || 'left-label'; // 'left-label' or 'top-label'
|
||||
this.tilt = options.tilt || 'none'; // 'none', 'left' (90deg), 'right' (-90deg), 'upside-down' (180deg)
|
||||
this.containerId = options.containerId || 'tiles-display';
|
||||
this.apiUrl = options.apiUrl || 'http://localhost:5000/api/random_hand';
|
||||
this.apiUrl = options.apiUrl || '/api/random_hand';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@
|
|||
let allTiles = [];
|
||||
|
||||
// Récupérer les tuiles
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
fetch('/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
allTiles = data.tiles;
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@
|
|||
tilesDisplay.appendChild(interactiveTitle);
|
||||
|
||||
// Créer et afficher la main interactive avec une tuile piochée
|
||||
fetch('http://localhost:5000/api/hand_with_draw')
|
||||
fetch('/api/hand_with_draw')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const handDiv = document.createElement('div');
|
||||
|
|
@ -268,7 +268,7 @@
|
|||
// Fonction pour défausser une tuile
|
||||
async function discardTile(tileId, tileElement) {
|
||||
try {
|
||||
const response = await fetch('http://localhost:5000/api/discard', {
|
||||
const response = await fetch('/api/discard', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
|
|
|
|||
|
|
@ -111,171 +111,34 @@
|
|||
: '<img src="../../img/tilineau/speaking.png" alt="Tilineau">';
|
||||
});
|
||||
|
||||
// Afficher les pons et les chiis
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay = document.getElementById('tiles-display');
|
||||
const tile = data.tiles[10];
|
||||
|
||||
if (tile) {
|
||||
for (let i = 0; i < 3; i++) {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay.appendChild(tileDiv);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay2 = document.getElementById('tiles-display-2');
|
||||
const tile1 = data.tiles[11];
|
||||
const tile2 = data.tiles[12];
|
||||
const tile3 = data.tiles[13];
|
||||
|
||||
if (tile1 && tile2 && tile3) {
|
||||
const tiles = [tile1, tile2, tile3];
|
||||
tiles.forEach(tile => {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay2.appendChild(tileDiv);
|
||||
// Fonction utilitaire pour afficher les tuiles
|
||||
function displayTiles(displayId, tileIndices) {
|
||||
fetch('/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const display = document.getElementById(displayId);
|
||||
tileIndices.forEach(idx => {
|
||||
const tile = data.tiles[idx];
|
||||
if (tile) {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
display.appendChild(tileDiv);
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
}
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay = document.getElementById('tiles-display-3');
|
||||
const tile = data.tiles[30];
|
||||
|
||||
if (tile) {
|
||||
for (let i = 0; i < 3; i++) {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay.appendChild(tileDiv);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay = document.getElementById('tiles-display-4');
|
||||
const tile = data.tiles[32];
|
||||
|
||||
if (tile) {
|
||||
for (let i = 0; i < 3; i++) {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay.appendChild(tileDiv);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay2 = document.getElementById('tiles-display-5');
|
||||
const tile1 = data.tiles[21];
|
||||
const tile2 = data.tiles[22];
|
||||
|
||||
if (tile1 && tile2) {
|
||||
const tiles = [tile1, tile2];
|
||||
tiles.forEach(tile => {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay2.appendChild(tileDiv);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay2 = document.getElementById('tiles-display-6');
|
||||
const tile1 = data.tiles[11];
|
||||
const tile2 = data.tiles[12];
|
||||
const tile3 = data.tiles[13];
|
||||
const tile4 = data.tiles[14];
|
||||
|
||||
if (tile1 && tile2) {
|
||||
const tiles = [tile1, tile2, tile3, tile4];
|
||||
tiles.forEach(tile => {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay2.appendChild(tileDiv);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay2 = document.getElementById('tiles-display-7');
|
||||
const tile1 = data.tiles[27];
|
||||
const tile2 = data.tiles[28];
|
||||
const tile3 = data.tiles[29];
|
||||
|
||||
if (tile1 && tile2 && tile3) {
|
||||
const tiles = [tile1, tile2, tile3];
|
||||
tiles.forEach(tile => {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay2.appendChild(tileDiv);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay2 = document.getElementById('tiles-display-8');
|
||||
const tile1 = data.tiles[31];
|
||||
const tile2 = data.tiles[32];
|
||||
const tile3 = data.tiles[33];
|
||||
|
||||
if (tile1 && tile2 && tile3) {
|
||||
const tiles = [tile1, tile2, tile3];
|
||||
tiles.forEach(tile => {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay2.appendChild(tileDiv);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const tilesDisplay2 = document.getElementById('tiles-display-9');
|
||||
const tile1 = data.tiles[3];
|
||||
const tile2 = data.tiles[13];
|
||||
const tile3 = data.tiles[23];
|
||||
const tile4 = data.tiles[6];
|
||||
const tile5 = data.tiles[16];
|
||||
const tile6 = data.tiles[26];
|
||||
|
||||
if (tile1 && tile2 && tile3 && tile4 && tile5 && tile6) {
|
||||
const tiles = [tile1, tile2, tile3, tile4, tile5, tile6];
|
||||
tiles.forEach(tile => {
|
||||
const tileDiv = document.createElement('div');
|
||||
tileDiv.innerHTML = tile.svg;
|
||||
tilesDisplay2.appendChild(tileDiv);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Erreur:', error));
|
||||
// Afficher les combinaisons
|
||||
displayTiles('tiles-display', [10, 10, 10]);
|
||||
displayTiles('tiles-display-2', [11, 12, 13]);
|
||||
displayTiles('tiles-display-3', [30, 30, 30]);
|
||||
displayTiles('tiles-display-4', [32, 32, 32]);
|
||||
displayTiles('tiles-display-5', [21, 22]);
|
||||
displayTiles('tiles-display-6', [11, 12, 13, 14]);
|
||||
displayTiles('tiles-display-7', [27, 28, 29]);
|
||||
displayTiles('tiles-display-8', [31, 32, 33]);
|
||||
displayTiles('tiles-display-9', [3, 13, 23, 6, 16, 26]);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
let allTiles = [];
|
||||
|
||||
// Récupérer les tuiles
|
||||
fetch('http://localhost:5000/api/tiles')
|
||||
fetch('/api/tiles')
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
allTiles = data.tiles;
|
||||
|
|
|
|||
Loading…
Reference in a new issue