142 lines
3.6 KiB
YAML
142 lines
3.6 KiB
YAML
# Mixpost - Self-hosted social media management (Laravel)
|
|
# https://github.com/inovector/mixpost
|
|
#
|
|
# Stack:
|
|
# - app: Laravel + nginx (porta interna 80)
|
|
# - horizon: queue worker
|
|
# - scheduler: cron-like scheduled tasks
|
|
# - db: MySQL 8.0
|
|
# - redis: Redis 7
|
|
|
|
services:
|
|
app:
|
|
image: inovector/mixpost:latest
|
|
restart: always
|
|
environment:
|
|
APP_NAME: Mixpost
|
|
APP_ENV: production
|
|
APP_KEY: base64:2a7a8d497c22c43be59bc4d873763f8505ee0f8dbda6
|
|
APP_DEBUG: "false"
|
|
APP_URL: https://mixpost.fluxtechnologies.uk
|
|
DB_CONNECTION: mysql
|
|
DB_HOST: db
|
|
DB_PORT: "3306"
|
|
DB_DATABASE: mixpost
|
|
DB_USERNAME: mixpost
|
|
DB_PASSWORD: 282a989ffe21a5db3daa757f29871a57
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: "6379"
|
|
CACHE_DRIVER: redis
|
|
QUEUE_CONNECTION: redis
|
|
SESSION_DRIVER: redis
|
|
MAIL_MAILER: log
|
|
LOG_CHANNEL: stderr
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
networks:
|
|
- coolify-proxy
|
|
- mixpost
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.mixapp.rule=Host(`mixpost.fluxtechnologies.uk`)
|
|
- traefik.http.routers.mixapp.entrypoints=https
|
|
- traefik.http.routers.mixapp.tls=true
|
|
- traefik.http.routers.mixapp.tls.certresolver=letsencrypt
|
|
- traefik.http.services.mixapp.loadbalancer.server.port=80
|
|
- coolify.managed=true
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://localhost/api/mixpost"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
horizon:
|
|
image: inovector/mixpost:latest
|
|
restart: always
|
|
command: php artisan horizon
|
|
environment:
|
|
APP_NAME: Mixpost
|
|
APP_ENV: production
|
|
APP_KEY: base64:2a7a8d497c22c43be59bc4d873763f8505ee0f8dbda6
|
|
APP_URL: https://mixpost.fluxtechnologies.uk
|
|
DB_CONNECTION: mysql
|
|
DB_HOST: db
|
|
DB_PORT: "3306"
|
|
DB_DATABASE: mixpost
|
|
DB_USERNAME: mixpost
|
|
DB_PASSWORD: 282a989ffe21a5db3daa757f29871a57
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: "6379"
|
|
CACHE_DRIVER: redis
|
|
QUEUE_CONNECTION: redis
|
|
SESSION_DRIVER: redis
|
|
depends_on:
|
|
app:
|
|
condition: service_started
|
|
networks:
|
|
- mixpost
|
|
|
|
scheduler:
|
|
image: inovector/mixpost:latest
|
|
restart: always
|
|
command: sh -c "while true; do php artisan schedule:run; sleep 60; done"
|
|
environment:
|
|
APP_NAME: Mixpost
|
|
APP_ENV: production
|
|
APP_KEY: base64:2a7a8d497c22c43be59bc4d873763f8505ee0f8dbda6
|
|
APP_URL: https://mixpost.fluxtechnologies.uk
|
|
DB_CONNECTION: mysql
|
|
DB_HOST: db
|
|
DB_PORT: "3306"
|
|
DB_DATABASE: mixpost
|
|
DB_USERNAME: mixpost
|
|
DB_PASSWORD: 282a989ffe21a5db3daa757f29871a57
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: "6379"
|
|
CACHE_DRIVER: redis
|
|
QUEUE_CONNECTION: redis
|
|
SESSION_DRIVER: redis
|
|
networks:
|
|
- mixpost
|
|
|
|
db:
|
|
image: mysql:8.0
|
|
restart: always
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: fe21dcf3a9658d24850ed7d7f66fa2f9
|
|
MYSQL_DATABASE: mixpost
|
|
MYSQL_USER: mixpost
|
|
MYSQL_PASSWORD: 282a989ffe21a5db3daa757f29871a57
|
|
volumes:
|
|
- mixpost-db:/var/lib/mysql
|
|
networks:
|
|
- mixpost
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: always
|
|
networks:
|
|
- mixpost
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
volumes:
|
|
mixpost-db:
|
|
|
|
networks:
|
|
coolify-proxy:
|
|
external: true
|
|
mixpost:
|
|
driver: bridge
|