add a frontend container
This commit is contained in:
+8
-2
@@ -1,4 +1,10 @@
|
|||||||
GIT_REPO=
|
BACKEND_GIT_REPO=
|
||||||
|
FRONTEND_GIT_REPO=
|
||||||
|
BACKEND_GIT_BRANCH=
|
||||||
|
FRONTEND_GIT_BRANCH=
|
||||||
GIT_TOKEN=
|
GIT_TOKEN=
|
||||||
GIT_BRANCH=
|
|
||||||
|
MYSQL_ROOT_PASSWORD=
|
||||||
|
MYSQL_DATABASE=
|
||||||
|
|
||||||
TYPESENSE_API_KEY=
|
TYPESENSE_API_KEY=
|
||||||
+29
-14
@@ -1,28 +1,43 @@
|
|||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
php:
|
php:
|
||||||
build:
|
build:
|
||||||
context: docker
|
context: ./docker/php
|
||||||
dockerfile: docker/php/Dockerfile
|
dockerfile: Dockerfile
|
||||||
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
|
||||||
|
- frontend-public:/var/www/app/public
|
||||||
environment:
|
environment:
|
||||||
- GIT_TOKEN=${GIT_TOKEN}
|
- GIT_TOKEN=${GIT_TOKEN}
|
||||||
- GIT_REPO=${GIT_REPO}
|
- BACKEND_GIT_REPO=${BACKEND_GIT_REPO}
|
||||||
|
- BACKEND_GIT_BRANCH=${BACKEND_GIT_BRANCH}
|
||||||
depends_on:
|
depends_on:
|
||||||
- mariadb
|
- mariadb
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
build:
|
||||||
|
context: ./docker/frontend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: app-frontend
|
||||||
|
environment:
|
||||||
|
- GIT_TOKEN=${GIT_TOKEN}
|
||||||
|
- FRONTEND_GIT_REPO=${FRONTEND_GIT_REPO}
|
||||||
|
- FRONTEND_GIT_BRANCH=${FRONTEND_GIT_BRANCH}
|
||||||
|
volumes:
|
||||||
|
- frontend-public:/public
|
||||||
|
depends_on:
|
||||||
|
- php
|
||||||
|
command: [ "build" ]
|
||||||
|
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
image: nginx
|
image: nginx
|
||||||
container_name: app-nginx
|
container_name: app-nginx
|
||||||
volumes:
|
volumes:
|
||||||
- app-code:/var/www/app
|
- app-code:/var/www/app
|
||||||
- ./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"
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -31,14 +46,13 @@ services:
|
|||||||
mariadb:
|
mariadb:
|
||||||
image: mariadb:latest
|
image: mariadb:latest
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: root
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||||
MYSQL_DATABASE: laravel
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
ports:
|
ports:
|
||||||
- "3306:3306"
|
- "3306:3306"
|
||||||
volumes:
|
volumes:
|
||||||
- dbdata:/var/lib/mysql
|
- dbdata:/var/lib/mysql
|
||||||
|
|
||||||
|
|
||||||
typesense:
|
typesense:
|
||||||
image: typesense/typesense:29.0
|
image: typesense/typesense:29.0
|
||||||
restart: on-failure
|
restart: on-failure
|
||||||
@@ -52,8 +66,8 @@ services:
|
|||||||
|
|
||||||
backup:
|
backup:
|
||||||
build:
|
build:
|
||||||
context: docker
|
context: ./docker/backup
|
||||||
dockerfile: docker/backup/Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: app-backup
|
container_name: app-backup
|
||||||
volumes:
|
volumes:
|
||||||
- ./backups:/backups
|
- ./backups:/backups
|
||||||
@@ -63,8 +77,8 @@ services:
|
|||||||
|
|
||||||
reverb:
|
reverb:
|
||||||
build:
|
build:
|
||||||
context: docker
|
context: ./docker/php
|
||||||
dockerfile: docker/php/Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: app-reverb
|
container_name: app-reverb
|
||||||
entrypoint: /usr/local/bin/entrypoint.sh
|
entrypoint: /usr/local/bin/entrypoint.sh
|
||||||
command: php artisan reverb:start --host=0.0.0.0 --port=8080
|
command: php artisan reverb:start --host=0.0.0.0 --port=8080
|
||||||
@@ -79,6 +93,7 @@ services:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
app-code:
|
app-code:
|
||||||
|
frontend-public:
|
||||||
dbdata:
|
dbdata:
|
||||||
typesense-data:
|
typesense-data:
|
||||||
|
|
||||||
@@ -86,4 +101,4 @@ networks:
|
|||||||
default:
|
default:
|
||||||
ipam:
|
ipam:
|
||||||
config:
|
config:
|
||||||
- subnet: 192.168.200.0/24
|
- subnet: 192.168.200.0/24
|
||||||
@@ -5,8 +5,8 @@ RUN apk add --no-cache mariadb-client bash dcron
|
|||||||
RUN mkdir -p /backups
|
RUN mkdir -p /backups
|
||||||
RUN mkdir -p /etc/periodic/15min
|
RUN mkdir -p /etc/periodic/15min
|
||||||
|
|
||||||
COPY backup/backup_db.sh /etc/periodic/15min/backup_db
|
COPY backup_db.sh /etc/periodic/15min/backup_db
|
||||||
COPY backup/entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
RUN chmod +x /etc/periodic/15min/backup_db
|
RUN chmod +x /etc/periodic/15min/backup_db
|
||||||
RUN chmod +x /entrypoint.sh
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
FROM node:20-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN apk add --no-cache git bash
|
||||||
|
|
||||||
|
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||||
|
CMD ["build"]
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
FRONTEND_DIR=/app
|
||||||
|
PUBLIC_DIR=/public
|
||||||
|
APP_DIR=/var/www/app
|
||||||
|
|
||||||
|
GIT_URL="https://${GIT_TOKEN}@${FRONTEND_GIT_REPO}"
|
||||||
|
|
||||||
|
|
||||||
|
while [ ! -f "$APP_DIR/composer.json" ]; do
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
if [ ! -d "$FRONTEND_DIR/.git" ]; then
|
||||||
|
git clone -b "${FRONTEND_GIT_BRANCH:-main}" "$GIT_URL" "$FRONTEND_DIR"
|
||||||
|
else
|
||||||
|
cd "$FRONTEND_DIR"
|
||||||
|
git pull "$GIT_URL" "${FRONTEND_GIT_BRANCH:-main}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$FRONTEND_DIR"
|
||||||
|
|
||||||
|
if [ -f package.json ]; then
|
||||||
|
npm ci
|
||||||
|
fi
|
||||||
|
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
rm -rf "$PUBLIC_DIR/*"
|
||||||
|
cp -r dist/* "$PUBLIC_DIR/"
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
@@ -6,7 +6,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
|
|
||||||
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
|
||||||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||||||
|
|
||||||
WORKDIR /var/www/app
|
WORKDIR /var/www/app
|
||||||
|
|||||||
@@ -2,12 +2,13 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
APP_DIR=/var/www/app
|
APP_DIR=/var/www/app
|
||||||
|
GIT_URL="https://${GIT_TOKEN}@${BACKEND_GIT_REPO}"
|
||||||
|
|
||||||
if [ ! -d "$APP_DIR/.git" ]; then
|
if [ ! -d "$APP_DIR/.git" ]; then
|
||||||
git clone -b "${GIT_BRANCH:-main}" "$GIT_REPO" "$APP_DIR"
|
GIT_URL="https://${GIT_TOKEN}@${BACKEND_GIT_REPO}"
|
||||||
else
|
else
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
git pull origin "${GIT_BRANCH:-main}"
|
git pull "$GIT_URL" "${BACKEND_GIT_BRANCH:-main}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
@@ -20,4 +21,10 @@ if [ -d storage ] && [ -d bootstrap/cache ]; then
|
|||||||
chown -R www-data:www-data storage bootstrap/cache
|
chown -R www-data:www-data storage bootstrap/cache
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
php artisan key:generate --no-interaction
|
||||||
|
fi
|
||||||
|
|
||||||
|
php artisan migrate --force
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user