Compare commits

..

No commits in common. "826cc43b929a374f87c9cd6a06a88a36bbf83aa1" and "ad8200d6d5323bf91c6341fd99405e77ca24201c" have entirely different histories.

10 changed files with 49 additions and 205 deletions

View File

@ -1,7 +1,7 @@
APP_NAME="Adrema"
APP_ENV=production
APP_ENV=local
APP_KEY=YOUR_APP_KEY
APP_DEBUG=false
APP_DEBUG=true
APP_URL=http://localhost:8000
APP_MODE=stamm
@ -13,6 +13,3 @@ MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME=me
DB_PASSWORD=secret_db_password
MYSQL_PASSWORD=secret_db_password

View File

@ -1,13 +0,0 @@
#!/bin/bash
set -e
# ------------------------- check for database access -------------------------
function wait_for_db {
while true; do
echo "waiting for Database init"
php -r 'new PDO("mysql:host='$DB_HOST';dbname='$DB_DATABASE'", "'$DB_USERNAME'", "'$DB_PASSWORD'");' > /dev/null && return 0
done
}
su www-data -c 'php artisan horizon' -s /bin/sh

View File

@ -2,8 +2,6 @@ FROM composer:2.2.7 as composer
WORKDIR /app
COPY . /app
RUN composer install --ignore-platform-reqs --no-dev
RUN php artisan telescope:publish
RUN php artisan horizon:publish
FROM node:17.9.0-slim as node
WORKDIR /app
@ -12,12 +10,9 @@ RUN npm install && npm run prod && npm run img && rm -R node_modules
FROM nginx:1.21.6-alpine as nginx
WORKDIR /app
COPY --from=node /app /app
COPY --from=composer /app/public/vendor /app/public/vendor
COPY ./.docker/nginx/nginx.conf /etc/nginx/nginx.conf
RUN cd public && ln -s ../storage/app/public ./storage
COPY --chown=www-data:www-data . /app
COPY --chown=www-data:www-data --from=node /app/public /app/public
COPY --chown=www-data:www-data --from=composer /app/vendor /app/vendor
EXPOSE 80
VOLUME ["/app/storage/app"]
CMD ["nginx", "-g", "daemon off;"]

View File

@ -1,30 +0,0 @@
#!/bin/bash
set -e
# --------------------------- ensure appkey is set ----------------------------
if [ $APP_KEY = "YOUR_APP_KEY" ]; then
echo "----------------------- Keinen APP KEY gefunden. Key wird generiert: $(php artisan key:generate --show) ----------------------- Füge diesen Key als APP_KEY ein ---------------------"
exit 1
fi
# ------------------------- check for database access -------------------------
function wait_for_db {
while true; do
echo "waiting for Database init"
php -r 'new PDO("mysql:host='$DB_HOST';dbname='$DB_DATABASE'", "'$DB_USERNAME'", "'$DB_PASSWORD'");' > /dev/null && return 0
sleep 1
done
}
wait_for_db
php -r '$connection = new PDO("mysql:host='$DB_HOST';dbname='$DB_DATABASE'", "'$DB_USERNAME'", "'$DB_PASSWORD'"); $connection->query("DESCRIBE migrations");' > /dev/null || php artisan migrate --seed --force
php artisan migrate --force
mkdir /app/packages/laravel-nami/.cookies || true
mkdir /app/storage/app || true
chown -R www-data:www-data /app/packages/laravel-nami/.cookies
chown -R www-data:www-data /app/storage/app
php-fpm -F -R -O

View File

@ -6,29 +6,19 @@ RUN composer install --ignore-platform-reqs --no-dev
FROM node:17.9.0-slim as node
WORKDIR /app
COPY . /app
RUN npm install && npm run prod && npm run img && rm -R node_modules
RUN npm install && npm run prod && rm -R node_modules
FROM php:8.1.6-fpm as php
WORKDIR /app
RUN apt-get update
RUN apt-get install -y rsync libcurl3-dev apt-utils zlib1g-dev libpng-dev libicu-dev libonig-dev unzip
RUN apt-get install -y --no-install-recommends texlive-base texlive-latex-base texlive-pictures texlive-latex-extra texlive-lang-german texlive-plain-generic texlive-fonts-recommended texlive-fonts-extra
RUN docker-php-ext-install pdo_mysql curl gd exif intl mbstring pcntl
RUN docker-php-ext-install pdo_mysql curl gd intl mbstring pcntl
RUN pecl install redis && docker-php-ext-enable redis
COPY --chown=www-data:www-data . /app
COPY --chown=www-data:www-data --from=node /app/public /app/public
COPY --chown=www-data:www-data --from=composer /app/vendor /app/vendor
USER www-data
RUN php artisan telescope:publish
RUN php artisan horizon:publish
USER root
COPY ./.docker/php-entrypoint /bin/php-entrypoint
COPY ./.docker/horizon-entrypoint /bin/horizon-entrypoint
VOLUME ["/app/packages/laravel-nami/.cookies", "/app/storage/app"]
EXPOSE 9000
CMD /bin/php-entrypoint
CMD ["php-fpm", "-F", "-R", "-O"]

View File

@ -3,8 +3,3 @@ data
vendor
public/build
public/vendor
bootstrap/cache/services.php
bootstrap/cache/packages.php
bootstrap/cache/routes.php
packages/laravel-nami/.cookies
app/storage/app

View File

@ -32,7 +32,7 @@ steps:
- apt-get update > /dev/null
- apt-get install -y rsync libcurl3-dev apt-utils zlib1g-dev libpng-dev libicu-dev libonig-dev unzip > /dev/null
- apt-get install -y --no-install-recommends texlive-base texlive-latex-base texlive-pictures texlive-latex-extra texlive-lang-german texlive-plain-generic texlive-fonts-recommended texlive-fonts-extra > /dev/null
- docker-php-ext-install pdo_mysql curl gd exif intl mbstring pcntl > /dev/null
- docker-php-ext-install pdo_mysql curl gd intl mbstring pcntl > /dev/null
- pecl install redis && docker-php-ext-enable redis > /dev/null
- php artisan migrate
- php artisan test
@ -63,36 +63,6 @@ steps:
PDFLATEX_BIN: /usr/bin/pdflatex
XELATEX_BIN: /usr/bin/xelatex
- name: docker_app_push
image: plugins/docker
settings:
dockerfile: ./.docker/php.Dockerfile
repo: zoomyboy/adrema-app
username: zoomyboy
password:
from_secret: docker_hub_token
tags:
- latest
- ${DRONE_TAG}
pull_image: true
when:
event: tag
- name: docker_webservice_push
image: plugins/docker
settings:
dockerfile: ./.docker/nginx.Dockerfile
repo: zoomyboy/adrema-webservice
username: zoomyboy
password:
from_secret: docker_hub_token
tags:
- latest
- ${DRONE_TAG}
pull_image: true
when:
event: tag
- name: composer_no_dev
image: composer:2.2.7
commands:

View File

@ -32,45 +32,31 @@ Außerdem ist AdReMa auch problemlos auf Handys und Tablets bedienbar ("mobiles
# Installation
## App Key generieren
Submodules updaten:
Kopiere .app.env.example nach .app.env
```
git submodule update --init
```
Example env erstellen:
```
cp .app.env.example .app.env
```
Services starten:
Container bauen
```
docker compose up
docker-compose build
```
Es wird die ein App Key generiert: ``Keinen APP KEY gefunden. Key wird generiert: base64:..........``
Key generieren
Kopiere diesen App key und setze in in .app.env als APP_KEY ein (APP_KEY=base64:........).
```
docker-compose run php php artisan key:generate --show
```
## Einstellungen
Passe in der .app.env dann folgende Einstellungen an:
### APP_URL
Hier sollte die URL (mit HTTPS) stehen, unter der Adrema erreichbar sein soll (z.B. https://adrema.stamm-bipi.de)
### Mail
Setze nun die Einstellungen für den Mail-Versand ein. Du solltest mindestens MAIL_PORT, MAIL_HOST, MAIL_USERNAME, MAIL_PASSWORD und MAIL_ENCRYPTION setzen.
MAIL_FROM_NAME ist der Name, der als Absender von E-Mails gesetzt wird. z.B. "Stamm Bipi Service".
MAIL_FROM_ADDRESS die dazu gehörige E-Mail-Adresse, die natürlich erreichbar sein sollte (z.B. "vorstand@stamm-bipi.de").
### DB Passwort
Setze die beiden letzten Variablen (da wo "secret_db_password" steht) auf ein generiertes sicheres Passwort. Bei beiden Variablen muss der gleiche Wert eingestellt werden (also so wie vorher, nur sicherer :D )
## Starten
Ersetze nun "YOUR_APP_KEY" in .app.env mit dem generierten Key (base64:qzX....).
Führe nun den DB Container aus, um eine erste Version der Datenbank zu erstellen.
@ -78,11 +64,24 @@ Führe nun den DB Container aus, um eine erste Version der Datenbank zu erstelle
docker-compose up db -d
```
Migrations ausführen
```
docker-compose run php php artisan migrate --seed
```
Alles stoppen, dann alles neu starten
```
docker-compose stop
docker-compose up -d
```
Nun kannst du auf localhost:8000 die App öffnen, einen LB verwenden, den Port mit CLI Optionen ändern, etc.
## Standard Login
Beim ersten Starten wird ein Benutzer mit folgenden Zugangsdaten erstellt:
Wenn du die Seeder ausführst ("--seed", siehe oben), wird ein Benutzer mit folgenden Zugangsdaten erstellt:
* E-Mail-Adresse: admin@example.com
* Passwort: admin

View File

@ -1,63 +0,0 @@
version: '3'
services:
webservice:
image: zoomyboy/adrema-webservice:latest
depends_on:
- php
ports:
- '8000:80'
volumes:
- ./data/storage:/app/storage/app
php:
image: zoomyboy/adrema-app:latest
depends_on:
- db
env_file:
- .app.env
environment:
DB_HOST: db
DB_DATABASE: db
DB_USERNAME: db
QUEUE_CONNECTION: redis
XELATEX_BIN: /usr/bin/xelatex
PDFLATEX_BIN: /usr/bin/pdflatex
REDIS_HOST: redis
volumes:
- ./data/storage:/app/storage/app
- ./cookies:/app/packages/laravel-nami/.cookies
horizon:
image: zoomyboy/adrema-app:latest
depends_on:
- db
- php
command: /bin/horizon-entrypoint
env_file:
- .app.env
environment:
DB_HOST: db
DB_DATABASE: db
DB_USERNAME: db
QUEUE_CONNECTION: redis
XELATEX_BIN: /usr/bin/xelatex
PDFLATEX_BIN: /usr/bin/pdflatex
REDIS_HOST: redis
volumes:
- ./data/storage:/app/storage/app
- ./cookies:/app/packages/laravel-nami/.cookies
db:
image: mariadb:10.6.5
env_file:
- .app.env
environment:
MARIADB_RANDOM_ROOT_PASSWORD: yes
MYSQL_DATABASE: db
MYSQL_USER: db
volumes:
- ./data/db:/var/lib/mysql
redis:
image: redis:alpine3.18
container_name: redis

View File

@ -4,47 +4,51 @@ services:
build:
context: .
dockerfile: ./.docker/nginx.Dockerfile
image: nginx:1.21.6-alpine
container_name: nginx
depends_on:
- php
ports:
- '8000:80'
volumes:
- ./data/storage:/app/storage/app
- ./.docker/nginx/nginx.conf:/etc/nginx/nginx.conf
php:
build:
context: .
dockerfile: ./.docker/php.Dockerfile
container_name: php
depends_on:
- db
command: php-fpm -F -R
env_file:
- .app.env
environment:
DB_HOST: db
DB_DATABASE: db
DB_USERNAME: db
DB_PASSWORD: secret
QUEUE_CONNECTION: redis
XELATEX_BIN: /usr/bin/xelatex
PDFLATEX_BIN: /usr/bin/pdflatex
REDIS_HOST: redis
volumes:
- ./data/storage:/app/storage/app
- ./cookies:/app/packages/laravel-nami/.cookies
horizon:
build:
context: .
dockerfile: ./.docker/php.Dockerfile
container_name: horizon
depends_on:
- db
- php
command: /bin/horizon-entrypoint
command: php artisan horizon
env_file:
- .app.env
environment:
DB_HOST: db
DB_DATABASE: db
DB_USERNAME: db
DB_PASSWORD: secret
QUEUE_CONNECTION: redis
XELATEX_BIN: /usr/bin/xelatex
PDFLATEX_BIN: /usr/bin/pdflatex
@ -52,10 +56,10 @@ services:
db:
image: mariadb:10.6.5
env_file:
- .app.env
container_name: db
environment:
MARIADB_RANDOM_ROOT_PASSWORD: yes
MARIADB_ROOT_PASSWORD: secret_root_password
MYSQL_PASSWORD: secret
MYSQL_DATABASE: db
MYSQL_USER: db
volumes: