update README.md add app-code in docker project

This commit is contained in:
2026-01-30 17:13:01 +01:00
parent e47c36c189
commit c515ab9769
6 changed files with 57 additions and 28 deletions
+7 -1
View File
@@ -7,4 +7,10 @@ GIT_TOKEN=
MYSQL_ROOT_PASSWORD= MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE= MYSQL_DATABASE=
TYPESENSE_API_KEY= TYPESENSE_API_KEY=
#A mettre quand vous êtes en développement pas en production
#DEV=1
USER_ID=1000
GROUP_ID=1000
+2 -1
View File
@@ -1,3 +1,4 @@
.idea .idea
.env .env
backups/ backups/
app-code/
+12 -5
View File
@@ -3,11 +3,13 @@
## Initialisation ## Initialisation
Afin d'initialiser le projet il est requis de : Afin d'initialiser le projet il est requis de :
- Créer un fichier ``.env`` à la racine - Créer un fichier ``.env`` à la racine du projet
- Copier coller le contenu du fichier ``.env.example`` - Copier coller le contenu du fichier ``.env.example`` dans ce ``.env``
- Remplir les variables du fichier .env - Remplir les variables du fichier ``.env`` :
- Pour la variable ``GIT_TOKEN`` il est nécessaire de chercher/générer son token sur gitlab dans l'onglet : ``Préférences/User settings/Personal access tokens`` - ``GIT_TOKEN`` : chercher/générer son token sur gitlab dans l'onglet : ``Préférences/User settings/Personal access tokens`` (si vous devez le générer, ne pas oublier de cocher la case ``read_repository``)
- ter l'opération pour le ``docker/php/.env`` et le ``docker/frontend/.env`` - ``BACKEND_GIT_REPO`` et ``FRONTEND_GIT_REPO`` : récurer l'adresse https des dépôts et enlever au début des liens ``https://``
- Répéter l'opération pour le ``docker/php/.env`` avec le ``docker/php/.env.example``
- Faire de même pour le ``docker/frontend/.env`` avec le ``docker/php/.env.example``
## Installation ## Installation
Il suffit ensuite d'ouvrir un terminal, de ce placer à la racine de ce projet et d'exécuter les commandes suivantes : Il suffit ensuite d'ouvrir un terminal, de ce placer à la racine de ce projet et d'exécuter les commandes suivantes :
@@ -17,3 +19,8 @@ docker compose down -v
```bash ```bash
docker compose up --build -d docker compose up --build -d
``` ```
> [!NOTE]
> Si vous êtes sur Windows, changer vos caractères de contrôles de ``CRLF`` à ``LF`` (pour chaque fichier ``.sh`` du projet)
+8 -10
View File
@@ -15,16 +15,20 @@ services:
build: build:
context: ./docker/php context: ./docker/php
dockerfile: Dockerfile dockerfile: Dockerfile
args:
USER_ID: ${USER_ID:-1000}
GROUP_ID: ${GROUP_ID:-1000}
container_name: app-php container_name: app-php
extra_hosts: extra_hosts:
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
volumes: volumes:
- app-code:/var/www/app - ./app-code:/var/www/app${DEV:+:delegated}
- ./docker/php/.env:/tmp/app.env:ro - ./docker/php/.env:/tmp/app.env:ro
environment: environment:
- GIT_TOKEN=${GIT_TOKEN} - GIT_TOKEN=${GIT_TOKEN}
- BACKEND_GIT_REPO=${BACKEND_GIT_REPO} - BACKEND_GIT_REPO=${BACKEND_GIT_REPO}
- BACKEND_GIT_BRANCH=${BACKEND_GIT_BRANCH} - BACKEND_GIT_BRANCH=${BACKEND_GIT_BRANCH}
- DEV=${DEV}
depends_on: depends_on:
- mariadb - mariadb
restart: unless-stopped restart: unless-stopped
@@ -45,7 +49,7 @@ services:
- FRONTEND_GIT_REPO=${FRONTEND_GIT_REPO} - FRONTEND_GIT_REPO=${FRONTEND_GIT_REPO}
- FRONTEND_GIT_BRANCH=${FRONTEND_GIT_BRANCH} - FRONTEND_GIT_BRANCH=${FRONTEND_GIT_BRANCH}
volumes: volumes:
- app-code:/var/www/app - ./app-code:/var/www/app${DEV:+:delegated}
- ./docker/frontend/.env:/tmp/app.env:ro - ./docker/frontend/.env:/tmp/app.env:ro
depends_on: depends_on:
php: php:
@@ -56,7 +60,7 @@ services:
image: nginx:alpine image: nginx:alpine
container_name: app-nginx container_name: app-nginx
volumes: volumes:
- app-code:/var/www/app - ./app-code:/var/www/app${DEV:+:delegated}
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
ports: ports:
- "80:80" - "80:80"
@@ -69,14 +73,9 @@ services:
typesense: typesense:
image: typesense/typesense:29.0 image: typesense/typesense:29.0
container_name: app-typesense
restart: unless-stopped restart: unless-stopped
ports:
- "8108:8108"
volumes: volumes:
- typesense-data:/data - typesense-data:/data
environment:
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
command: '--data-dir /data --api-key=${TYPESENSE_API_KEY} --enable-cors' command: '--data-dir /data --api-key=${TYPESENSE_API_KEY} --enable-cors'
backup: backup:
@@ -103,7 +102,7 @@ services:
entrypoint: [] entrypoint: []
command: php artisan reverb:start --host=0.0.0.0 --port=8080 command: php artisan reverb:start --host=0.0.0.0 --port=8080
volumes: volumes:
- app-code:/var/www/app - ./app-code:/var/www/app${DEV:+:delegated}
ports: ports:
- "8080:8080" - "8080:8080"
depends_on: depends_on:
@@ -112,7 +111,6 @@ services:
restart: unless-stopped restart: unless-stopped
volumes: volumes:
app-code:
dbdata: dbdata:
typesense-data: typesense-data:
+10 -1
View File
@@ -1,9 +1,18 @@
FROM php:8.4-fpm FROM php:8.4-fpm
ARG USER_ID=1000
ARG GROUP_ID=1000
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git unzip libzip-dev libpng-dev libonig-dev \ git unzip libzip-dev libpng-dev libonig-dev gosu \
&& docker-php-ext-install pdo_mysql zip pcntl && docker-php-ext-install pdo_mysql zip pcntl
RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
groupmod -g ${GROUP_ID} www-data && \
usermod -u ${USER_ID} -g ${GROUP_ID} www-data \
;fi
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
COPY entrypoint.sh /usr/local/bin/entrypoint.sh COPY entrypoint.sh /usr/local/bin/entrypoint.sh
+18 -10
View File
@@ -4,30 +4,38 @@ set -e
APP_DIR=/var/www/app APP_DIR=/var/www/app
GIT_URL="https://oauth2:${GIT_TOKEN}@${BACKEND_GIT_REPO}" GIT_URL="https://oauth2:${GIT_TOKEN}@${BACKEND_GIT_REPO}"
# Si le dossier app-code est vide ou n'existe pas, on le prépare
if [ ! -d "$APP_DIR/.git" ]; then if [ ! -d "$APP_DIR/.git" ]; then
# Créer le dossier avec les bonnes permissions si nécessaire
mkdir -p "$APP_DIR"
# Cloner en tant que root d'abord
git clone -b "${BACKEND_GIT_BRANCH:-main}" "$GIT_URL" "$APP_DIR" git clone -b "${BACKEND_GIT_BRANCH:-main}" "$GIT_URL" "$APP_DIR"
# Puis changer TOUS les propriétaires vers www-data
chown -R www-data:www-data "$APP_DIR"
else else
cd "$APP_DIR" cd "$APP_DIR"
git fetch origin # S'assurer que www-data possède le dossier avant fetch
git reset --hard origin/"${BACKEND_GIT_BRANCH:-main}" chown -R www-data:www-data "$APP_DIR"
gosu www-data git fetch origin
gosu www-data git reset --hard origin/"${BACKEND_GIT_BRANCH:-main}"
fi fi
cd "$APP_DIR" cd "$APP_DIR"
if [ -f composer.json ]; then if [ -f composer.json ]; then
composer update --no-interaction --prefer-dist --optimize-autoloader gosu www-data composer update --no-interaction --prefer-dist --optimize-autoloader
fi fi
cp /tmp/app.env .env cp /tmp/app.env .env
chown www-data:www-data .env
php artisan key:generate --force gosu www-data php artisan key:generate --force
gosu www-data php artisan config:clear
gosu www-data php artisan cache:clear
gosu www-data php artisan migrate --force
php artisan config:clear
php artisan cache:clear
php artisan migrate --force
chown -R www-data:www-data public/ storage bootstrap/cache public vendor
chmod -R 775 storage bootstrap/cache chmod -R 775 storage bootstrap/cache
chmod -R 755 public chmod -R 755 public