update README.md add app-code in docker project
This commit is contained in:
+7
-1
@@ -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
@@ -1,3 +1,4 @@
|
|||||||
.idea
|
.idea
|
||||||
.env
|
.env
|
||||||
backups/
|
backups/
|
||||||
|
app-code/
|
||||||
@@ -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``)
|
||||||
- Répéter l'opération pour le ``docker/php/.env`` et le ``docker/frontend/.env``
|
- ``BACKEND_GIT_REPO`` et ``FRONTEND_GIT_REPO`` : récupérer 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
@@ -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
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user