Skip to content

Commit a92b70e

Browse files
committed
✨ Update Docker Configuration and Remove Unused Files
- Add new file watching patterns for images in adonisrc.ts - Remove obsolete Dockerfile.dev and compose.dev.yaml files - Update deployment workflow to reference the new compose.yaml - Enhance active and progress documentation in memory bank to reflect current project state and architecture
1 parent 8b22083 commit a92b70e

13 files changed

Lines changed: 225 additions & 114 deletions

File tree

.github/workflows/deploy.dev.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ on:
66
workflow_dispatch:
77

88
env:
9-
APP_NAME: ${{ github.event.repository.name }}
10-
APP_PATH: /home/apps/${{ github.event.repository.name }}
11-
ENV: dev
9+
APP_NAME: ${{ github.event.repository.name }}.dev
10+
APP_PATH: /home/apps/${{ github.event.repository.name }}.dev
1211
DATABASE_NAME: javascript_cm
1312

1413
jobs:
@@ -87,7 +86,7 @@ jobs:
8786
port: ${{ secrets.VPS_PORT }}
8887
script: |
8988
cd "${{ env.APP_PATH }}/app"
90-
sed -i "1s/^/name: ${{ env.APP_NAME }}\n/" compose.${{ env.ENV }}.yaml
89+
sed -i "1s/^/name: ${{ env.APP_NAME }}\n/" compose.yaml
9190
9291
- name: Construire et démarrer les conteneurs Docker
9392
uses: appleboy/ssh-action@v1.0.3
@@ -98,7 +97,8 @@ jobs:
9897
port: ${{ secrets.VPS_PORT }}
9998
script: |
10099
cd "${{ env.APP_PATH }}/app"
101-
docker compose -f compose.${{ env.ENV }}.yaml down || true
102-
docker compose -f compose.${{ env.ENV }}.yaml build --no-cache
103-
docker compose -f compose.${{ env.ENV }}.yaml up -d
100+
docker compose -f compose.yaml down || true
101+
docker compose -f compose.yaml build --no-cache
102+
docker compose -f compose.yaml up -d
103+
104104
docker system prune -f

adonisrc.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,14 @@ export default defineConfig({
9090
pattern: 'resources/views/**/*.edge',
9191
reloadServer: false,
9292
},
93+
{
94+
pattern: 'resources/images/**/*',
95+
reloadServer: false,
96+
},
97+
{
98+
pattern: 'resources/**/*.{png,jpg,jpeg,gif,svg,ico}',
99+
reloadServer: false,
100+
},
93101
{
94102
pattern: 'public/**',
95103
reloadServer: false,

compose.dev.yaml

Lines changed: 0 additions & 70 deletions
This file was deleted.

compose.yaml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
version: '3.8'
2+
3+
services:
4+
app:
5+
build:
6+
context: .
7+
dockerfile: docker/node/Dockerfile
8+
container_name: jscm-app
9+
env_file:
10+
- .env
11+
ports:
12+
- "3333:3333"
13+
volumes:
14+
- .:/app
15+
- /app/node_modules
16+
environment:
17+
- NODE_ENV=development
18+
- DB_HOST=mysql
19+
- DB_PORT=3306
20+
- DB_DATABASE=${DB_DATABASE}
21+
- DB_USERNAME=${DB_USERNAME}
22+
- DB_PASSWORD=${DB_PASSWORD}
23+
depends_on:
24+
- mysql
25+
command: sh -c "npm install && npm run dev"
26+
27+
mysql:
28+
build:
29+
context: .
30+
dockerfile: docker/mysql/Dockerfile
31+
container_name: jscm-mysql
32+
env_file:
33+
- .env
34+
ports:
35+
- "3306:3306"
36+
environment:
37+
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
38+
- MYSQL_DATABASE=${DB_DATABASE}
39+
- MYSQL_USER=${DB_USERNAME}
40+
- MYSQL_PASSWORD=${DB_PASSWORD}
41+
volumes:
42+
- mysql_data:/var/lib/mysql
43+
44+
migrations:
45+
build:
46+
context: .
47+
dockerfile: docker/node/Dockerfile
48+
target: deps
49+
container_name: jscm-migrations
50+
env_file:
51+
- .env
52+
volumes:
53+
- .:/app
54+
- /app/node_modules
55+
environment:
56+
- NODE_ENV=development
57+
- DB_HOST=mysql
58+
- DB_PORT=3306
59+
- DB_DATABASE=${DB_DATABASE}
60+
- DB_USERNAME=${DB_USERNAME}
61+
- DB_PASSWORD=${DB_PASSWORD}
62+
depends_on:
63+
- mysql
64+
command: sh -c "node ace migration:run"
65+
66+
volumes:
67+
mysql_data:

docker/mysql/Dockerfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
FROM mysql:8.0
2+
3+
# Créer le répertoire de travail
4+
WORKDIR /app
5+
6+
# Copier le script d'initialisation
7+
COPY docker/mysql/init.sh /docker-entrypoint-initdb.d/
8+
9+
# Donner les permissions d'exécution au script
10+
RUN chmod +x /docker-entrypoint-initdb.d/init.sh
11+
12+
# Exposer le port MySQL
13+
EXPOSE 3306
14+
15+
# Commande par défaut
16+
CMD ["mysqld"]

docker/mysql/init.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
3+
# Attendre que MySQL soit prêt
4+
until mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SELECT 1"; do
5+
echo "Waiting for MySQL to be ready..."
6+
sleep 2
7+
done
8+
9+
# Créer la base de données si elle n'existe pas
10+
mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE;"
11+
12+
echo "Database initialization completed!"
Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
ARG NODE_IMAGE=node:20.14.0-bookworm-slim
2-
3-
FROM $NODE_IMAGE AS base
1+
FROM node:20.12.2-alpine3.18 AS base
42

53
# All deps stage
64
FROM base AS deps
75
WORKDIR /app
8-
COPY package*.json ./
9-
RUN npm install --force
6+
ADD package.json package-lock.json ./
7+
RUN npm ci
108

119
# Production only deps stage
1210
FROM base AS production-deps
1311
WORKDIR /app
14-
COPY package*.json ./
15-
RUN npm install --force
12+
ADD package.json package-lock.json ./
13+
RUN npm ci --omit=dev
1614

1715
# Build stage
1816
FROM base AS build
1917
WORKDIR /app
2018
COPY --from=deps /app/node_modules /app/node_modules
21-
COPY . .
19+
ADD . .
2220
RUN node ace build
2321

2422
# Production stage
@@ -27,10 +25,5 @@ ENV NODE_ENV=production
2725
WORKDIR /app
2826
COPY --from=production-deps /app/node_modules /app/node_modules
2927
COPY --from=build /app/build /app
30-
31-
32-
RUN npm i -g @redocly/cli@latest
33-
34-
RUN apt-get update && apt-get install -y default-mysql-client && rm -rf /var/lib/apt/lists/*
35-
36-
EXPOSE $PORT
28+
EXPOSE 3333
29+
CMD ["node", "./bin/server.js"]

env.txt

Whitespace-only changes.

memory-bank/.cursorrules

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,46 @@
22

33
## Schémas de mise en œuvre critiques
44

5-
(Décrivez les schémas importants découverts dans le projet.)
5+
- Utilisation de Dockerfiles multi-stage pour optimiser la taille des images et améliorer la sécurité
6+
- Séparation des responsabilités entre les services Docker
7+
- Utilisation de l'étape de dépendances du Dockerfile pour le service de migrations
8+
- Configuration des variables d'environnement pour une flexibilité maximale
9+
- Utilisation de volumes Docker pour la persistance des données et le développement en temps réel
610

711
## Préférences de l'utilisateur et flux de travail
812

9-
(Notez les préférences et les flux de travail pertinents pour l'utilisateur.)
13+
- Préférence pour une architecture basée sur des conteneurs Docker
14+
- Utilisation de Node.js 20.12.2 pour la production
15+
- Utilisation de MySQL 8.0 pour la base de données
16+
- Configuration des variables d'environnement via le fichier .env
17+
- Exécution des migrations via un service dédié
1018

1119
## Schémas spécifiques au projet
1220

13-
(Décrivez les schémas uniques ou récurrents dans ce projet.)
21+
- Architecture en trois services : App, MySQL et Migrations
22+
- Utilisation d'AdonisJS comme framework backend
23+
- Configuration Docker optimisée pour le développement et la production
24+
- Script d'initialisation pour la base de données MySQL
25+
- Service dédié pour les migrations de base de données
1426

1527
## Défis connus
1628

17-
(Liste des défis techniques ou de processus identifiés.)
29+
- Configuration correcte des variables d'environnement pour tous les services
30+
- Exécution fiable des migrations de base de données
31+
- Optimisation des images Docker pour réduire la taille et améliorer la sécurité
32+
- Gestion des dépendances entre les services Docker
1833

1934
## Évolution des décisions du projet
2035

21-
(Enregistrez comment les décisions importantes ont évolué.)
36+
- Passage d'une configuration simple à une architecture basée sur des conteneurs Docker
37+
- Optimisation du Dockerfile Node.js avec un build multi-stage
38+
- Création d'un service dédié pour les migrations de base de données
39+
- Utilisation de l'étape de dépendances du Dockerfile pour le service de migrations
2240

2341
## Schémas d'utilisation des outils
2442

25-
(Observations sur l'utilisation des outils et des processus dans le projet.)
43+
- Utilisation de Docker et Docker Compose pour la conteneurisation
44+
- Utilisation de Node.js et npm pour le développement backend
45+
- Utilisation de MySQL pour la base de données
46+
- Utilisation d'AdonisJS comme framework backend
47+
- Utilisation de volumes Docker pour la persistance des données et le développement en temps réel

memory-bank/activeContext.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,28 @@
22

33
## Focus de travail actuel
44

5-
(Décrivez sur quoi on travaille actuellement.)
5+
Configuration de l'environnement de développement avec Docker pour le projet JSCM. Nous avons mis en place une architecture basée sur des conteneurs avec trois services principaux : l'application AdonisJS, la base de données MySQL et un service dédié pour les migrations.
66

77
## Changements récents
88

9-
(Résumez les changements récents apportés au projet.)
9+
- Création d'un Dockerfile multi-stage pour le service Node.js basé sur Node.js 20.12.2
10+
- Configuration d'un service MySQL avec script d'initialisation
11+
- Mise en place d'un service dédié pour les migrations de base de données
12+
- Optimisation de l'architecture Docker pour améliorer les performances et la fiabilité
13+
- Utilisation de l'étape de dépendances du Dockerfile pour le service de migrations
1014

1115
## Prochaines étapes
1216

13-
(Liste des prochaines étapes ou tâches à accomplir.)
17+
- Tester la configuration Docker complète
18+
- Développer les fonctionnalités de l'application AdonisJS
19+
- Mettre en place les modèles de données et les migrations
20+
- Configurer l'authentification et les autorisations
21+
- Développer les endpoints de l'API
1422

1523
## Décisions et considérations actives
1624

17-
(Notez les décisions récentes et les considérations importantes en cours.)
25+
- Utilisation de Docker pour garantir la cohérence entre les environnements
26+
- Séparation des responsabilités entre les services
27+
- Optimisation des images Docker pour réduire la taille et améliorer la sécurité
28+
- Configuration des variables d'environnement pour une flexibilité maximale
29+
- Utilisation de volumes Docker pour la persistance des données et le développement en temps réel

0 commit comments

Comments
 (0)