feat/docker-compose-update (#18)

Co-authored-by: jon brookes <marshyon@gmail.com>
Reviewed-on: https://codeberg.org/headshed/share-lt/pulls/18
This commit is contained in:
Jon Brookes 2026-02-08 18:04:18 +01:00
parent fd43495e2d
commit 1a22fd156d
70 changed files with 1068 additions and 745 deletions

View file

@ -0,0 +1,103 @@
services:
nats:
image: nats:2.9.19-alpine
restart: unless-stopped
#ports:
# - 4222:4222
# - 8222:8222
volumes:
- ./nats/nats-server.conf:/nats-server.conf
- nats-data:/opt/storage
command: ["-c", "/nats-server.conf"]
networks:
- app-network
- nats
# nats-cli:
# image: natsio/nats-box
# container_name: nats-cli
# depends_on:
# - nats
# command: sleep infinity # Keeps container running
# networks:
# - app-network
# - nats
app:
image: quay.io/marshyon/share-lt:v0.0.5
restart: unless-stopped
tty: false
working_dir: /var/www
networks:
- app-network
- nats
ports:
- 8889:8889
volumes:
- storage-data:/var/www/storage
- database-data:/var/www/database
- ./nginx/conf.d/app.conf:/etc/nginx/http.d/app.conf
- ./docker/php/php.ini:/usr/local/etc/php/php.ini
environment:
- "LIVEWIRE_TEMPORARY_FILE_UPLOAD_MAX_FILE_UPLOAD_TIME=5"
- "ADMIN_EMAIL=${ADMIN_EMAIL}"
- "APP_NAME=${APP_NAME}"
- "APP_ENV=production"
- "APP_KEY=${APP_KEY}"
- "APP_DEBUG=false"
- "APP_URL=${APP_URL}"
- "APP_LOCALE=en"
- "APP_FALLBACK_LOCALE=en"
- "APP_MAINTENANCE_DRIVER=file"
- "PHP_CLI_SERVER_WORKERS=4"
- "BCRYPT_ROUNDS=12"
- "LOG_CHANNEL=stack"
- "LOG_STACK=single"
- "LOG_DEPRECATIONS_CHANNEL=null"
- "LOG_LEVEL=${LOG_LEVEL}"
- "DB_CONNECTION=sqlite"
- "SESSION_DRIVER=database"
- "SESSION_LIFETIME=120"
- "SESSION_ENCRYPT=false"
- "SESSION_PATH=/"
- "SESSION_DOMAIN=null"
- "BROADCAST_CONNECTION=log"
- "FILESYSTEM_DISK=s3"
- "QUEUE_CONNECTION=database"
- "CACHE_STORE=database"
- "CACHE_PREFIX=laravel_"
- "MAIL_MAILER=smtp"
- "MAIL_SCHEME=smtp"
- "MAIL_HOST=${MAIL_HOST}"
- "MAIL_PORT=${MAIL_PORT}"
- "MAIL_USERNAME=${MAIL_USERNAME}"
- "MAIL_PASSWORD=${MAIL_PASSWORD}"
- "MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS}"
- "MAIL_FROM_NAME=${APP_NAME}"
- "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"
- "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}"
- "AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}"
- "AWS_BUCKET=${AWS_BUCKET}"
- "AWS_USE_PATH_STYLE_ENDPOINT=${AWS_USE_PATH_STYLE_ENDPOINT}"
- "AWS_DIRECTORY=${AWS_DIRECTORY}"
- "MEDIA_DISK=${MEDIA_DISK}"
- "VITE_APP_NAME=${APP_NAME}"
- "NATS_URL=${NATS_URL}"
- "NATS_USERNAME=${NATS_USERNAME}"
- "NATS_PASSWORD=${NATS_PASSWORD}"
- "NATS_STREAM=${NATS_STREAM}"
- "NATS_SUBJECT=${NATS_SUBJECT}"
volumes:
storage-data:
database-data:
nats-data:
networks:
app-network:
nats:
external: true

View file

@ -0,0 +1,18 @@
services:
#PHP Service
app:
image: quay.io/marshyon/share-lt:0.0.1
ports:
- "8000:8000"
command: sh -c "php artisan optimize:clear && php artisan serve --host=0.0.0.0 --port=8000"
volumes:
- ./.env:/var/www/.env
- ./database/database.sqlite:/var/www/database/database.sqlite
- ./storage:/var/www/storage
restart: unless-stopped
tty: true
working_dir: /var/www

View file

@ -0,0 +1,84 @@
services:
app:
image: quay.io/marshyon/share-lt:v0.0.5
restart: unless-stopped
tty: false
working_dir: /var/www
networks:
- app-network
- traefik-net9
volumes:
- storage-data:/var/www/storage
- database-data:/var/www/database
- ./nginx/conf.d/app.conf:/etc/nginx/http.d/app.conf
- ./docker/php/php.ini:/usr/local/etc/php/php.ini
environment:
- "LIVEWIRE_TEMPORARY_FILE_UPLOAD_MAX_FILE_UPLOAD_TIME=5"
- "ADMIN_EMAIL=${ADMIN_EMAIL}"
- "APP_NAME=${APP_NAME}"
- "APP_ENV=production"
- "APP_KEY=${APP_KEY}"
- "APP_DEBUG=false"
- "APP_URL=${APP_URL}"
- "APP_LOCALE=en"
- "APP_FALLBACK_LOCALE=en"
- "APP_MAINTENANCE_DRIVER=file"
- "PHP_CLI_SERVER_WORKERS=4"
- "BCRYPT_ROUNDS=12"
- "LOG_CHANNEL=stack"
- "LOG_STACK=single"
- "LOG_DEPRECATIONS_CHANNEL=null"
- "LOG_LEVEL=${LOG_LEVEL}"
- "DB_CONNECTION=sqlite"
- "SESSION_DRIVER=database"
- "SESSION_LIFETIME=120"
- "SESSION_ENCRYPT=false"
- "SESSION_PATH=/"
- "SESSION_DOMAIN=null"
- "BROADCAST_CONNECTION=log"
- "FILESYSTEM_DISK=s3"
- "QUEUE_CONNECTION=database"
- "CACHE_STORE=database"
- "CACHE_PREFIX=laravel_"
- "MAIL_MAILER=smtp"
- "MAIL_SCHEME=smtp"
- "MAIL_HOST=${MAIL_HOST}"
- "MAIL_PORT=${MAIL_PORT}"
- "MAIL_USERNAME=${MAIL_USERNAME}"
- "MAIL_PASSWORD=${MAIL_PASSWORD}"
- "MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS}"
- "MAIL_FROM_NAME=${APP_NAME}"
- "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"
- "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}"
- "AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}"
- "AWS_BUCKET=${AWS_BUCKET}"
- "AWS_USE_PATH_STYLE_ENDPOINT=${AWS_USE_PATH_STYLE_ENDPOINT}"
- "AWS_DIRECTORY=${AWS_DIRECTORY}"
- "MEDIA_DISK=${MEDIA_DISK}"
- "VITE_APP_NAME=${APP_NAME}"
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-net9"
- "traefik.http.services.${APP_SERVICE_NAME}.loadbalancer.server.port=${APP_PORT}"
- "traefik.http.services.${APP_SERVICE_NAME}.loadbalancer.server.scheme=http"
- "traefik.http.routers.${APP_SERVICE_NAME}.service=${APP_SERVICE_NAME}"
- "traefik.http.routers.${APP_SERVICE_NAME}.tls.certresolver=le"
- "traefik.http.routers.${APP_SERVICE_NAME}.rule=Host(`${APP_DOMAIN}`)"
- "traefik.http.routers.${APP_SERVICE_NAME}.entrypoints=websecure"
- "traefik.http.routers.${APP_SERVICE_NAME}.tls=true"
volumes:
storage-data:
database-data:
networks:
app-network:
traefik-net9:
external: true