prod: new devenv

This commit is contained in:
Flo 2025-10-31 17:09:19 +01:00
parent 7c62023e6f
commit 6da1b65915
15 changed files with 103 additions and 138 deletions

View File

@ -1,10 +1,10 @@
# DB Configuration # DB Configuration
DB_DRIVER=pdo_mysql DB_DRIVER=pdo_mysql
DB_HOST=myTube-backend-mysql DB_HOST=mytube-backend-mysql
DB_PORT=3306 DB_PORT=3306
DB_USER=myTube DB_USER=mytube
DB_PASSWORD=pass DB_PASSWORD=pass
DB_NAME=myTube DB_NAME=mytube
DB_NAME_LOG=log DB_NAME_LOG=log
# MyTube Setup # MyTube Setup

View File

@ -1,3 +0,0 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
$SCRIPT_DIR/exec build

View File

@ -1,3 +0,0 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
$SCRIPT_DIR/exec down

View File

@ -1,23 +0,0 @@
#!/bin/bash
COMMAND="$@"
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
#LOAD ENV VARIABLES FROM .ENV
export $(grep -v '^#' "${SCRIPT_DIR}/../../.env" | xargs)
#MAC
if [[ "$OSTYPE" == "darwin"* ]]; then
docker compose -f "${SCRIPT_DIR}/../../docker/docker-compose-mac.yml" $COMMAND
#LINUX
elif [[ "$OSTYPE" == "linux-gnu" ]]; then
docker compose -f "${SCRIPT_DIR}/../../docker/docker-compose.yml" $COMMAND
else
echo "Dieses Skript wird auf deinem Gerät nicht unterstützt"
exit 1
fi
#UNSET ENV VARIABLES FROM .ENV
unset $(grep -v '^#' "${SCRIPT_DIR}/../../.env" | sed -E 's/(.*)=.*/\1/' | xargs)

40
bin/script/firstRun Executable file
View File

@ -0,0 +1,40 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
PROJECT_DIR=$(realpath $SCRIPT_DIR/../../)
ENV_DIR=$(realpath $PROJECT_DIR/../../../)
source $ENV_DIR/bin/messages
source $ENV_DIR/bin/drun
# Create local config files
infomsg '[backend] Creating local config...'
cp "$PROJECT_DIR"/config/autoload/monolog.local.php.dist "$PROJECT_DIR"/config/autoload/monolog.local.php
cp "$PROJECT_DIR"/config/autoload/doctrine.local.php.dist "$PROJECT_DIR"/config/autoload/doctrine.local.php
cp "$PROJECT_DIR"/config/autoload/redis.local.php.dist "$PROJECT_DIR"/config/autoload/redis.local.php
successmsg '[backend] Local config done'
# Install packages
infomsg '[backend] Composer install...'
drun backend composer install -o
successmsg '[backend] Composer install done'
# Dump autoload
infomsg "[backend]: Dump autoload"
drun backend composer da
successmsg "[backend]: Dump autoload done"
# Migrate Databases
infomsg '[backend] Running migrations...'
drun backend composer doctrine migrations:migrate --no-interaction
drun backend composer doctrine-log migrations:migrate --no-interaction
successmsg '[backend] Migrations done'
# Seed DB
infomsg '[backend] Running seeder...'
drun backend composer console init:data
drun backend composer console rbac:update
successmsg '[backend] Seeding done'
successmsg '[backend] Initialization script done'

View File

@ -2,31 +2,19 @@
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
PROJECT_DIR=$(realpath $SCRIPT_DIR/../../) PROJECT_DIR=$(realpath $SCRIPT_DIR/../../)
ENV_DIR=$(realpath $PROJECT_DIR/../../) ENV_DIR=$(realpath $PROJECT_DIR/../../../)
source $ENV_DIR/bin/messages
# Check .env file # Check .env file
if [ ! -f "$PROJECT_DIR/.env" ] if [ ! -f "$PROJECT_DIR/.env" ] ; then
then infomsg "[backend] Creating .env"
echo "Create .env file from example..."
cp "$PROJECT_DIR/.env.example" "$PROJECT_DIR/.env" cp "$PROJECT_DIR/.env.example" "$PROJECT_DIR/.env"
echo ".env file created, please change variables and call me again" successmsg "[backend] Created .env"
exit 1
fi fi
# Build and start docker containers # Check docker-compose.yml file
$SCRIPT_DIR/exec build if [ ! -f "$PROJECT_DIR/docker/docker-compose.yml" ] ; then
$SCRIPT_DIR/exec up -d infomsg "[backend] Creating docker-compose.yml"
cp "$PROJECT_DIR/docker/docker-compose.yml.dist" "$PROJECT_DIR/docker/docker-compose.yml"
# Source drun successmsg "[backend] Creating docker-compose.yml"
source $ENV_DIR/bin/script/drun fi
# Install PHP packages
drun myTube-backend composer install
# Migrate databases to current version
drun myTube-backend composer dmm
drun myTube-backend composer dmlm
# Insert setup for project after this line
drun myTube-backend composer console rbac:update
drun myTube-backend composer console init:data

View File

@ -1,3 +0,0 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
$SCRIPT_DIR/exec stop

View File

@ -1,3 +0,0 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
$SCRIPT_DIR/exec up -d

39
bin/script/update Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
PROJECT_DIR=$(realpath $SCRIPT_DIR/../../)
ENV_DIR=$(realpath $PROJECT_DIR/../../../)
SYSTEM_ENV_FILE="$PROJECT_DIR/.env"
CWD=$(pwd)
source $ENV_DIR/bin/messages
source $ENV_DIR/bin/drun
# Pull branch in project directory
infomsg "[backend]: Git pull"
cd "$PROJECT_DIR"
git pull
successmsg "[backend]: Git pull done"
# Install packages
infomsg '[backend] Composer install...'
drun backend composer install -o
successmsg '[backend] Composer install done'
# Dump autoload
infomsg "[backend]: Dump autoload"
drun backend composer da
successmsg "[backend]: Dump autoload done"
# Migrate Databases
infomsg '[backend] Running migrations...'
drun backend composer doctrine migrations:migrate --no-interaction
drun backend composer doctrine-log migrations:migrate --no-interaction
successmsg '[backend] Migrations done'
# Update permissions
infomsg "[backend]: Update roles and permissions"
drun backend composer console rbac:update
successmsg "[backend]: Update roles and permissions done"
# Switch back to current working directory
cd "$CWD"

View File

@ -81,8 +81,8 @@
"scripts": { "scripts": {
"dmg": "php bin\/doctrine-migrations.php migrations:generate", "dmg": "php bin\/doctrine-migrations.php migrations:generate",
"dmm": "php bin\/doctrine-migrations.php migrations:migrate --no-interaction", "dmm": "php bin\/doctrine-migrations.php migrations:migrate --no-interaction",
"dmlg": "php bin\/doctrine-migrations-log.php migrations:generate", "doctrine": "php bin\/doctrine-migrations.php",
"dmlm": "php bin\/doctrine-migrations-log.php migrations:migrate --no-interaction", "doctrine-log": "php bin\/doctrine-migrations-log.php",
"console": "php bin\/console.php", "console": "php bin\/console.php",
"createApi": "php bin\/createApi.php", "createApi": "php bin\/createApi.php",
"createPipeline": "php bin\/createPipeline.php", "createPipeline": "php bin\/createPipeline.php",

View File

@ -52,8 +52,8 @@
"scripts": { "scripts": {
"dmg": "php bin/doctrine-migrations.php migrations:generate", "dmg": "php bin/doctrine-migrations.php migrations:generate",
"dmm": "php bin/doctrine-migrations.php migrations:migrate --no-interaction", "dmm": "php bin/doctrine-migrations.php migrations:migrate --no-interaction",
"dmlg": "php bin/doctrine-migrations-log.php migrations:generate", "doctrine": "php bin/doctrine-migrations.php",
"dmlm": "php bin/doctrine-migrations-log.php migrations:migrate --no-interaction", "doctrine-log": "php bin/doctrine-migrations-log.php",
"console": "php bin/console.php", "console": "php bin/console.php",
"createApi": "php bin/createApi.php", "createApi": "php bin/createApi.php",
"createPipeline": "php bin/createPipeline.php", "createPipeline": "php bin/createPipeline.php",

View File

@ -3,26 +3,9 @@
return [ return [
'api' => [ 'api' => [
'keys' => [ 'keys' => [
'myTube' => $_ENV['HOMEPAGE_API_KEY'],
'notification' => $_ENV['NOTIFICATION_API_KEY'],
], ],
'services' => [ 'services' => [
'myTube' => [
'host' => 'myTube-backend-nginx',
'apis' => [
]
],
'notification' => [
'host' => 'notification-backend-nginx',
'apis' => [
'send-mail' => [
'path' => '/api/mail/send',
'method' => 'POST'
],
],
],
], ],
], ],
]; ];

View File

@ -1,51 +0,0 @@
version: '3'
networks:
myTube:
external: true
services:
myTube-backend-mysql:
image: myTube-backend-mysql
networks:
- myTube
build:
context: ./../
dockerfile: ./docker/mysql/dockerfile
volumes:
- /Users/flo/dev/backend/myTube/var/db:/var/lib/mysql:z
environment:
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
ports:
- 3306:3306
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
timeout: 20s
retries: 10
myTube-backend-app:
image: myTube-backend-app
networks:
- myTube
build:
context: ./../
dockerfile: ./docker/php/dockerfile
volumes:
- /Users/flo/dev/backend/myTube/:/var/www/html:z
ports:
- 9000:9000
depends_on:
myTube-backend-mysql:
condition: service_healthy
myTube-backend-nginx:
image: myTube-backend-nginx
networks:
- myTube
build:
context: ./../
dockerfile: ./docker/nginx/dockerfile
ports:
- 8080:80
depends_on:
- myTube-backend-app

View File

@ -1,4 +1,3 @@
version: '3'
networks: networks:
mytube: mytube:
external: true external: true
@ -45,7 +44,9 @@ services:
build: build:
context: ./../ context: ./../
dockerfile: ./docker/nginx/dockerfile dockerfile: ./docker/nginx/dockerfile
ports: labels:
- 8080:80 - "traefik.http.routers.backend.rule=(Host(`mytube.srv`) || Host(`192.168.152.60`)) && PathPrefix(`/api`)"
- "traefik.http.routers.backend.entrypoints=websecure"
- "traefik.http.routers.backend.tls.certresolver=le"
depends_on: depends_on:
- mytube-backend-app - mytube-backend-app

View File

@ -1,4 +1,4 @@
CREATE DATABASE IF NOT EXISTS `log`; CREATE DATABASE IF NOT EXISTS `log`;
CREATE DATABASE IF NOT EXISTS `myTube`; CREATE DATABASE IF NOT EXISTS `mytube`;
GRANT ALL PRIVILEGES on *.* to 'myTube'@'%'; GRANT ALL PRIVILEGES on *.* to 'mytube'@'%';