diff --git a/public/svgs/chaskiq.png b/public/svgs/chaskiq.png new file mode 100644 index 0000000000..8f9f142abc Binary files /dev/null and b/public/svgs/chaskiq.png differ diff --git a/public/svgs/rabbitmq.svg b/public/svgs/rabbitmq.svg new file mode 100644 index 0000000000..7a94d71bb3 --- /dev/null +++ b/public/svgs/rabbitmq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/compose/chaskiq.yaml b/templates/compose/chaskiq.yaml new file mode 100644 index 0000000000..d5a379b64f --- /dev/null +++ b/templates/compose/chaskiq.yaml @@ -0,0 +1,153 @@ +# 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 \ No newline at end of file diff --git a/templates/compose/rabbitmq.yaml b/templates/compose/rabbitmq.yaml index b28171f1a2..b8846c8b77 100644 --- a/templates/compose/rabbitmq.yaml +++ b/templates/compose/rabbitmq.yaml @@ -1,15 +1,18 @@ -# ignore: true # documentation: https://www.rabbitmq.com/documentation.html # slogan: With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers. # tags: message broker, message queue, message-oriented middleware, MOM, AMQP, MQTT, STOMP, messaging +# logo: svgs/rabbitmq.svg +# port: 15672 services: rabbitmq: - image: rabbitmq:3 + image: rabbitmq:3-management environment: - - SERVICE_FQDN_RABBITMQ_5672 + - SERVICE_FQDN_RABBITMQ_15672 - RABBITMQ_DEFAULT_USER=$SERVICE_USER_RABBITMQ - RABBITMQ_DEFAULT_PASS=$SERVICE_PASSWORD_RABBITMQ + ports: + - 5672:5672 healthcheck: test: rabbitmq-diagnostics -q ping interval: 30s