mirror of
https://github.com/cupcakearmy/coolify.git
synced 2024-10-22 16:14:22 +02:00
153 lines
5.6 KiB
YAML
153 lines
5.6 KiB
YAML
# documentation: https://chaskiq.io
|
|
# slogan: Chaskiq is an messaging platform for marketing, support & sales
|
|
# tags: chaskiq,messaging,chat,marketing,support,sales,open,source,rails,redis,postgresql,sidekiq
|
|
# logo: svgs/chaskiq.png
|
|
# port: 3000
|
|
|
|
services:
|
|
chaskiq:
|
|
image: chaskiq/chaskiq:latest
|
|
environment:
|
|
- SERVICE_FQDN_CHASKIQ_3000
|
|
- REDIS_URL=redis://redis:6379/
|
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-chaskiq}
|
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
|
- SERVICE_URL=${SERVICE_URL_CHASKIQ}
|
|
- HOST=https://${SERVICE_URL_CHASKIQ}
|
|
- ASSET_HOST=https://${SERVICE_URL_CHASKIQ}
|
|
- WS=wss://${SERVICE_URL_CHASKIQ}/cable
|
|
- SNS_CONFIGURATION_SET=metrics
|
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
|
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-}
|
|
- AWS_S3_BUCKET=${AWS_S3_BUCKET:-}
|
|
- AWS_S3_REGION=${AWS_S3_REGION:-}
|
|
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example}
|
|
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-password}
|
|
- DEFAULT_SENDER_EMAIL=${DEFAULT_SENDER_EMAIL:-admin@example}
|
|
- LOCAL_STORAGE_PATH=./data/storage
|
|
- ACTIVE_STORAGE_SERVICE=${ACTIVE_STORAGE_SERVICE:-local}
|
|
- SMTP_DELIVERY_METHOD=${SMTP_DELIVERY_METHOD:-}
|
|
- SMTP_ADDRESS=${SMTP_ADDRESS:-}
|
|
- SMTP_USERNAME=${SMTP_USERNAME:-}
|
|
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
|
|
- CHASKIQ_APPSTORE_TOKEN=${CHASKIQ_APPSTORE_TOKEN:-}
|
|
- APP_ENV=production
|
|
- RAILS_ENV=production
|
|
- RACK_ENV=production
|
|
- RAILS_SERVE_STATIC_FILES=true
|
|
- SECRET_KEY_BASE=$SERVICE_PASSWORD_64_SECRET
|
|
- RAILS_LOG_TO_STDOUT=true
|
|
- ENABLED_AUDITS=true
|
|
- TZ=Europe/Madrid
|
|
entrypoint: ["/entrypoint.sh"]
|
|
depends_on:
|
|
postgresql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
volumes:
|
|
- chaskiq-storage:/data/storage
|
|
- type: bind
|
|
source: ./entrypoint.sh
|
|
target: /entrypoint.sh
|
|
content: |
|
|
#!/bin/sh
|
|
set -e
|
|
rm -f /usr/src/app/tmp/pids/server.pid
|
|
exec "$@"
|
|
while ! pg_isready -q -h postgresql -p 5432 -U $POSTGRES_USER
|
|
do
|
|
echo "$(date) - waiting for database to start."
|
|
sleep 2
|
|
done
|
|
echo "Running database migrations..."
|
|
bundle exec rails db:setup
|
|
bundle exec rails db:migrate
|
|
echo "Finished running database migrations."
|
|
echo "Running packages update..."
|
|
bundle exec rails packages:update
|
|
echo "Finished packages update."
|
|
if [ ! -f /usr/src/app/admin_generated ]; then
|
|
echo "/usr/src/app/admin_generated not found, executing admin generation.."
|
|
bundle exec rake admin_generator
|
|
touch /usr/src/app/admin_generated
|
|
echo "Admin generation finished !"
|
|
fi
|
|
bundle exec rails s -b 0.0.0.0 -p 3000
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
|
interval: 15s
|
|
timeout: 20s
|
|
retries: 15
|
|
sidekiq:
|
|
image: chaskiq/chaskiq:latest
|
|
environment:
|
|
- REDIS_URL=redis://redis:6379/
|
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-chaskiq}
|
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
|
- HOST=https://${SERVICE_URL_CHASKIQ}
|
|
- ASSET_HOST=https://${SERVICE_URL_CHASKIQ}
|
|
- WS=wss://${SERVICE_URL_CHASKIQ}/cable
|
|
- SNS_CONFIGURATION_SET=metrics
|
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
|
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-}
|
|
- AWS_S3_BUCKET=${AWS_S3_BUCKET:-}
|
|
- AWS_S3_REGION=${AWS_S3_REGION:-}
|
|
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example}
|
|
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-password}
|
|
- DEFAULT_SENDER_EMAIL=${DEFAULT_SENDER_EMAIL:-admin@example}
|
|
- LOCAL_STORAGE_PATH=./data/storage
|
|
- ACTIVE_STORAGE_SERVICE=${ACTIVE_STORAGE_SERVICE:-local}
|
|
- SMTP_DELIVERY_METHOD=${SMTP_DELIVERY_METHOD:-}
|
|
- SMTP_ADDRESS=${SMTP_ADDRESS:-}
|
|
- SMTP_USERNAME=${SMTP_USERNAME:-}
|
|
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
|
|
- CHASKIQ_APPSTORE_TOKEN=${CHASKIQ_APPSTORE_TOKEN:-}
|
|
- APP_ENV=production
|
|
- RAILS_ENV=production
|
|
- RACK_ENV=production
|
|
- RAILS_SERVE_STATIC_FILES=true
|
|
- SECRET_KEY_BASE=$SERVICE_PASSWORD_64_SECRET
|
|
- RAILS_LOG_TO_STDOUT=true
|
|
- ENABLED_AUDITS=true
|
|
- TZ=Europe/Madrid
|
|
volumes:
|
|
- chaskiq-storage:/data/storage
|
|
depends_on:
|
|
postgresql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
chaskiq:
|
|
condition: service_healthy
|
|
command: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml']
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "bundle exec rails runner 'puts Sidekiq.redis(&:info)' > /dev/null 2>&1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
postgresql:
|
|
image: postgres:14-alpine
|
|
volumes:
|
|
- postgresql-data:/var/lib/postgresql/data
|
|
environment:
|
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
|
- POSTGRES_DB=${POSTGRES_DB:-chaskiq}
|
|
- POSTGRES_INITDB_ARGS= --data-checksums
|
|
- PSQL_HISTFILE=/root/log/.psql_history
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
redis:
|
|
image: redis:6-alpine
|
|
restart: always
|
|
volumes:
|
|
- redis-data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10 |