obsidian #8
3 changed files with 158 additions and 0 deletions
5
solidtime/.env-example
Normal file
5
solidtime/.env-example
Normal file
|
@ -0,0 +1,5 @@
|
|||
SOLIDTIME_VERSION=latest
|
||||
SOLIDTIME_DOMAIN=solidtime.example.com
|
||||
SOLIDTIME_POSTGRES_DATABASE=solidtime
|
||||
SOLIDTIME_POSTGRES_USERNAME=solidtime
|
||||
SOLIDTIME_POSTGRES_PASSWORD=randompassword
|
109
solidtime/docker-compose.yml
Normal file
109
solidtime/docker-compose.yml
Normal file
|
@ -0,0 +1,109 @@
|
|||
services:
|
||||
app:
|
||||
image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}"
|
||||
container_name: solidtime
|
||||
restart: always
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=traefik"
|
||||
- "traefik.http.routers.solidtime.entrypoints=http"
|
||||
- "traefik.http.routers.solidtime.rule=Host(`${SOLIDTIME_DOMAIN:?error}`)"
|
||||
- "traefik.http.middlewares.solidtime-https-redirect.redirectscheme.scheme=https"
|
||||
- "traefik.http.routers.solidtime.middlewares=solidtime-https-redirect"
|
||||
- "traefik.http.routers.solidtime-secure.entrypoints=https"
|
||||
- "traefik.http.routers.solidtime-secure.rule=Host(`${SOLIDTIME_DOMAIN:?error}`)"
|
||||
- "traefik.http.routers.solidtime-secure.tls=true"
|
||||
- "traefik.http.routers.solidtime-secure.service=solidtime"
|
||||
- "traefik.http.services.solidtime.loadbalancer.server.port=8000"
|
||||
networks:
|
||||
- traefik
|
||||
- solidtime
|
||||
volumes:
|
||||
- "app-storage:/var/www/html/storage"
|
||||
- "./data/logs:/var/www/html/storage/logs"
|
||||
- "./data/app-storage:/var/www/html/storage/app"
|
||||
environment:
|
||||
CONTAINER_MODE: http
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "curl --fail http://localhost:8000/health-check/up || exit 1" ]
|
||||
env_file:
|
||||
- laravel.env
|
||||
depends_on:
|
||||
- database
|
||||
|
||||
scheduler:
|
||||
image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}"
|
||||
restart: always
|
||||
networks:
|
||||
- solidtime
|
||||
volumes:
|
||||
- "app-storage:/var/www/html/storage"
|
||||
- "./data/logs:/var/www/html/storage/logs"
|
||||
- "./data/app-storage:/var/www/html/storage/app"
|
||||
environment:
|
||||
CONTAINER_MODE: scheduler
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "supervisorctl status scheduler:scheduler_00" ]
|
||||
env_file:
|
||||
- laravel.env
|
||||
depends_on:
|
||||
- database
|
||||
|
||||
queue:
|
||||
restart: always
|
||||
image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}"
|
||||
networks:
|
||||
- solidtime
|
||||
volumes:
|
||||
- "app-storage:/var/www/html/storage"
|
||||
- "./data/logs:/var/www/html/storage/logs"
|
||||
- "./data/app-storage:/var/www/html/storage/app"
|
||||
environment:
|
||||
CONTAINER_MODE: worker
|
||||
WORKER_COMMAND: "php /var/www/html/artisan queue:work"
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "supervisorctl status worker:worker_00" ]
|
||||
env_file:
|
||||
- laravel.env
|
||||
depends_on:
|
||||
- database
|
||||
|
||||
database:
|
||||
restart: always
|
||||
image: 'postgres:${SOLIDTIME_POSTGRES_VERSION:-16}'
|
||||
environment:
|
||||
PGPASSWORD: '${SOLIDTIME_POSGRES_PASSWORD:?error}'
|
||||
POSTGRES_DB: '${SOLIDTIME_POSTGRES_DATABASE:?error}'
|
||||
POSTGRES_USER: '${SOLIDTIME_POSTGRES_USERNAME:?error}'
|
||||
POSTGRES_PASSWORD: '${SOLIDTIME_POSTGRES_PASSWORD:?error}'
|
||||
volumes:
|
||||
- 'database-storage:/var/lib/postgresql/data'
|
||||
networks:
|
||||
- solidtime
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- pg_isready
|
||||
- '-q'
|
||||
- '-d'
|
||||
- '${SOLIDTIME_POSTGRES_DATABASE}'
|
||||
- '-U'
|
||||
- '${SOLIDTIME_POSTGRES_USERNAME}'
|
||||
retries: 3
|
||||
timeout: 5s
|
||||
|
||||
gotenberg:
|
||||
image: gotenberg/gotenberg:8
|
||||
networks:
|
||||
- solidtime
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "--silent", "--fail", "http://localhost:3000/health" ]
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
volumes:
|
||||
database-storage:
|
||||
app-storage:
|
44
solidtime/laravel.env.example
Normal file
44
solidtime/laravel.env.example
Normal file
|
@ -0,0 +1,44 @@
|
|||
APP_ENV="production"
|
||||
APP_DEBUG="false"
|
||||
APP_URL="https://solidtime.example.com"
|
||||
APP_FORCE_HTTPS="true"
|
||||
TRUSTED_PROXIES="0.0.0.0/0,2000:0:0:0:0:0:0:0/3"
|
||||
|
||||
# Authentication
|
||||
APP_KEY=""
|
||||
PASSPORT_PRIVATE_KEY=""
|
||||
PASSPORT_PUBLIC_KEY=""
|
||||
SUPER_ADMINS=""
|
||||
|
||||
# Logging
|
||||
LOG_CHANNEL="stderr_daily"
|
||||
LOG_LEVEL="debug"
|
||||
|
||||
# Database
|
||||
DB_CONNECTION="pgsql"
|
||||
DB_HOST="database"
|
||||
DB_PORT="5432"
|
||||
DB_SSLMODE="require"
|
||||
DB_DATABASE="solidtime"
|
||||
DB_USERNAME="solidtime"
|
||||
DB_PASSWORD="randompassword"
|
||||
|
||||
# Mail
|
||||
MAIL_MAILER="smtp"
|
||||
MAIL_HOST=""
|
||||
MAIL_PORT=""
|
||||
MAIL_ENCRYPTION="tls"
|
||||
MAIL_FROM_ADDRESS="no-reply@solidtime.example.com"
|
||||
MAIL_FROM_NAME="solidtime"
|
||||
MAIL_USERNAME=""
|
||||
MAIL_PASSWORD=""
|
||||
|
||||
# Queue
|
||||
QUEUE_CONNECTION="database"
|
||||
|
||||
# File storage
|
||||
FILESYSTEM_DISK="local"
|
||||
PUBLIC_FILESYSTEM_DISK="public"
|
||||
|
||||
# Services
|
||||
GOTENBERG_URL="http://gotenberg:3000"
|
Loading…
Add table
Reference in a new issue