diff --git a/docker-compose.yml b/docker-compose.yml index a91c751..fada38a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,35 +1,19 @@ -# Mixpost - Self-hosted social media management (Laravel) -# https://docs.mixpost.app/installation/docker -# https://github.com/inovector/mixpost +# Mixpost Lite - Docker Compose +# Fonte: https://docs.mixpost.app/lite/installation/docker +# Adaptado para Coolify (já tem Traefik + rede coolify) # -# Stack: app (Laravel + nginx), horizon, scheduler, MySQL 8.0, Redis 7 +# O start.sh original do Mixpost roda "chown -R www-data:www-data /var/www/html" +# que pode travar em volumes Docker. A solução é pré-permitir o volume. services: app: image: inovector/mixpost:latest restart: always - environment: - APP_NAME: Mixpost - APP_ENV: production - APP_KEY: base64:AdNNBZUvMxmgU2IrG34A1M/SdwTVBnlfkbzwNaYeCTg= - 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 - # Fix: avoid chown hanging on large volumes - NGINX_RUN_USER: root - WWWUSER: root + env_file: + - .env + volumes: + - mixpost-storage:/var/www/html/storage/app + - mixpost-logs:/var/www/html/storage/logs depends_on: db: condition: service_healthy @@ -44,34 +28,13 @@ services: - traefik.http.routers.mixpost.tls.certresolver=letsencrypt - traefik.http.services.mixpost.loadbalancer.server.port=80 - coolify.managed=true - healthcheck: - test: ["CMD", "curl", "-f", "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:AdNNBZUvMxmgU2IrG34A1M/SdwTVBnlfkbzwNaYeCTg= - 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 - NGINX_RUN_USER: root - WWWUSER: root + env_file: + - .env depends_on: app: condition: service_started @@ -82,24 +45,8 @@ services: 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:AdNNBZUvMxmgU2IrG34A1M/SdwTVBnlfkbzwNaYeCTg= - 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 - NGINX_RUN_USER: root - WWWUSER: root + env_file: + - .env networks: - coolify @@ -107,16 +54,16 @@ services: image: mysql:8.0 restart: always environment: - MYSQL_ROOT_PASSWORD: fe21dcf3a9658d24850ed7d7f66fa2f9 MYSQL_DATABASE: mixpost MYSQL_USER: mixpost MYSQL_PASSWORD: 282a989ffe21a5db3daa757f29871a57 + MYSQL_ROOT_PASSWORD: fe21dcf3a9658d24850ed7d7f66fa2f9 volumes: - mixpost-db:/var/lib/mysql networks: - coolify healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"] + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"] interval: 10s timeout: 5s retries: 5 @@ -124,6 +71,9 @@ services: redis: image: redis:7-alpine restart: always + command: redis-server --appendonly yes --replica-read-only no + volumes: + - mixpost-redis:/data networks: - coolify healthcheck: @@ -134,6 +84,9 @@ services: volumes: mixpost-db: + mixpost-storage: + mixpost-logs: + mixpost-redis: networks: coolify: