[INFRA-232] Add automation consumer and outbox poller services in commercial deployment methods (#4004)

* Update application version to v1.14.0 and add automation consumer and outbox poller services

- Updated APP_RELEASE_VERSION to v1.14.0 in various deployment files.
- Added new services for automation consumer and outbox poller in Docker and Podman configurations.
- Introduced environment variables for outbox poller and automation consumer in relevant .env files.
- Updated build scripts to reflect the new version requirements.

* Add iframely service to deployment configurations

- Introduced iframely service in Dockerfile, supervisor.conf, and various deployment YAML files.
- Updated environment variables to include IFRAMELY_URL and IFRAMELY_REPLICAS.
- Ensured iframely service dependencies are correctly set in all relevant configurations.

* fix: update iframely image path in Dockerfile

* refactor: rename plane-iframely to iframely across deployment configurations

* chore: remove iframely dependency from deployment configurations

* chore: clean up whitespace in docker-compose.yml
This commit is contained in:
Akshat Jain
2025-08-28 18:20:31 +05:30
committed by GitHub
parent 13cfdaf6b7
commit c9dbd76e27
12 changed files with 388 additions and 67 deletions

View File

@@ -1,4 +1,4 @@
ARG PLANE_VERSION=v1.13.0
ARG PLANE_VERSION=v1.14.0
FROM --platform=$BUILDPLATFORM tonistiigi/binfmt AS binfmt
# **************************************************
@@ -15,6 +15,7 @@ FROM artifacts.plane.so/makeplane/silo-commercial:${PLANE_VERSION} AS silo-img
FROM artifacts.plane.so/makeplane/proxy-commercial:${PLANE_VERSION} AS proxy-img
FROM artifacts.plane.so/makeplane/email-commercial:${PLANE_VERSION} AS email-img
FROM artifacts.plane.so/makeplane/monitor-commercial:${PLANE_VERSION} AS monitor-img
FROM artifacts.plane.so/makeplane/iframely:v1.2.0 AS iframely-img
# **************************************************
# STAGE 1: Runner
@@ -39,6 +40,7 @@ COPY --from=space-img /app /app/space
COPY --from=admin-img /app /app/admin
COPY --from=live-img /app /app/live
COPY --from=silo-img /app /app/silo
COPY --from=iframely-img /iframely /app/iframely
COPY --from=monitor-img /usr/local/bin/prime-monitor /usr/local/bin/prime-monitor
RUN mkdir -p /app/monitor && \

View File

@@ -38,7 +38,7 @@ if [ -z "$APP_RELEASE_VERSION" ]; then
echo " ./build.sh [flags]"
echo ""
echo "Flags:"
echo " --release=<APP_RELEASE_VERSION> required (e.g. v1.10.0)"
echo " --release=<APP_RELEASE_VERSION> required (e.g. v1.14.0)"
echo ""
echo "Example: ./build.sh --release=v1.9.2 --platform=linux/amd64"
exit 1

View File

@@ -139,6 +139,43 @@ stderr_logfile=/app/logs/error/email.err.log
stderr_logfile_maxbytes=0
priority=20
[program:automation-consumer]
directory=/app/backend
command=sh -c "./bin/docker-entrypoint-automation-consumer.sh"
autostart=true
autorestart=true
stdout_logfile=/app/logs/access/automation-consumer.log
stdout_logfile_maxbytes=0
stderr_logfile=/app/logs/error/automation-consumer.err.log
# stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
priority=20
[program:outbox-poller]
directory=/app/backend
command=sh -c "./bin/docker-entrypoint-outbox-poller.sh"
autostart=true
autorestart=true
stdout_logfile=/app/logs/access/outbox-poller.log
stdout_logfile_maxbytes=0
stderr_logfile=/app/logs/error/outbox-poller.err.log
# stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
priority=20
[program:iframely]
directory=/app/iframely
command=sh -c "node server.js"
autostart=true
autorestart=true
stdout_logfile=/app/logs/access/iframely.log
stdout_logfile_maxbytes=0
stderr_logfile=/app/logs/error/iframely.err.log
# stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
environment=PORT=8061,HOSTNAME=0.0.0.0
priority=20
[program:proxy]
directory=/app/proxy
command=sh -c "caddy run --config /app/proxy/Caddyfile"

View File

@@ -1,5 +1,5 @@
DOMAIN_NAME=localhost
APP_RELEASE_VERSION=v1.10.0
APP_RELEASE_VERSION=v1.14.0
APP_PROTOCOL=http
API_HOSTNAME=http://localhost:3004
@@ -86,6 +86,7 @@ API_KEY_RATE_LIMIT=60/minute
# Live Server Secret Key
LIVE_SERVER_SECRET_KEY=htbqvBJAgpm9bzvf3r4urJer0ENReatceh
IFRAMELY_URL=http://localhost:8061
# Email Configuration
LISTEN_SMTP_PORT_25=10025
@@ -99,4 +100,25 @@ LISTEN_SMTP_PORT_587=10587
SMTP_DOMAIN=0.0.0.0
TLS_CERT_PATH=
TLS_PRIV_KEY_PATH=
INTAKE_EMAIL_DOMAIN=example.com
INTAKE_EMAIL_DOMAIN=example.com
# Outbox Poller Envs
OUTBOX_POLLER_MEMORY_LIMIT_MB=512
OUTBOX_POLLER_INTERVAL_MIN=0.25
OUTBOX_POLLER_INTERVAL_MAX=2
OUTBOX_POLLER_BATCH_SIZE=250
OUTBOX_POLLER_MEMORY_CHECK_INTERVAL=30
OUTBOX_POLLER_POOL_SIZE=4
OUTBOX_POLLER_POOL_MIN_SIZE=2
OUTBOX_POLLER_POOL_MAX_SIZE=10
OUTBOX_POLLER_POOL_TIMEOUT=30.0
OUTBOX_POLLER_POOL_MAX_IDLE=300.0
OUTBOX_POLLER_POOL_MAX_LIFETIME=3600
OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT=5.0
OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL=60
# Automation Envs
AUTOMATION_EVENT_STREAM_QUEUE_NAME=plane.event_stream.automations
AUTOMATION_EVENT_STREAM_PREFETCH=10
AUTOMATION_EXCHANGE_NAME=plane.event_stream
AUTOMATION_EVENT_TYPES=issue.

View File

@@ -35,7 +35,7 @@ if [ -z "$APP_RELEASE_VERSION" ]; then
echo " ./build.sh [flags]"
echo ""
echo "Flags:"
echo " --release=<APP_RELEASE_VERSION> required (e.g. v1.10.0)"
echo " --release=<APP_RELEASE_VERSION> required (e.g. v1.14.0)"
echo " --platform=<BUILD_PLATFORM> optional (default: linux/amd64)"
echo ""
echo "Example: ./build.sh --release=v1.9.2 --platform=linux/amd64"

View File

@@ -1,5 +1,5 @@
x-plane: &plane
APP_VERSION: ${APP_RELEASE_VERSION:-v1.10.0}
APP_VERSION: ${APP_RELEASE_VERSION:-v1.14.0}
APP_DOMAIN: ${DOMAIN_NAME:-localhost}
MACHINE_SIGNATURE: ${MACHINE_SIGNATURE}
DEPLOY_PLATFORM: docker_compose
@@ -134,6 +134,28 @@ x-app-env: &app-env
x-live-env: &live-env
API_BASE_URL: ${API_BASE_URL:-http://api:8000}
LIVE_SERVER_SECRET_KEY: ${LIVE_SERVER_SECRET_KEY:-htbqvBJAgpm9bzvf3r4urJer0ENReatceh}
IFRAMELY_URL: ${IFRAMELY_URL:-http://iframely:8061}
x-outbox-poller-env: &outbox-poller-env
OUTBOX_POLLER_MEMORY_LIMIT_MB: ${OUTBOX_POLLER_MEMORY_LIMIT_MB:-512}
OUTBOX_POLLER_INTERVAL_MIN: ${OUTBOX_POLLER_INTERVAL_MIN:-0.25}
OUTBOX_POLLER_INTERVAL_MAX: ${OUTBOX_POLLER_INTERVAL_MAX:-2}
OUTBOX_POLLER_BATCH_SIZE: ${OUTBOX_POLLER_BATCH_SIZE:-250}
OUTBOX_POLLER_MEMORY_CHECK_INTERVAL: ${OUTBOX_POLLER_MEMORY_CHECK_INTERVAL:-30}
OUTBOX_POLLER_POOL_SIZE: ${OUTBOX_POLLER_POOL_SIZE:-4}
OUTBOX_POLLER_POOL_MIN_SIZE: ${OUTBOX_POLLER_POOL_MIN_SIZE:-2}
OUTBOX_POLLER_POOL_MAX_SIZE: ${OUTBOX_POLLER_POOL_MAX_SIZE:-10}
OUTBOX_POLLER_POOL_TIMEOUT: ${OUTBOX_POLLER_POOL_TIMEOUT:-30.0}
OUTBOX_POLLER_POOL_MAX_IDLE: ${OUTBOX_POLLER_POOL_MAX_IDLE:-300.0}
OUTBOX_POLLER_POOL_MAX_LIFETIME: ${OUTBOX_POLLER_POOL_MAX_LIFETIME:-3600}
OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT: ${OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT:-5.0}
OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL: ${OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL:-30}
x-automation-consumer-env: &automation-consumer-env
AUTOMATION_EVENT_STREAM_QUEUE_NAME: ${AUTOMATION_EVENT_STREAM_QUEUE_NAME:-plane.event_stream.automations}
AUTOMATION_EVENT_STREAM_PREFETCH: ${AUTOMATION_EVENT_STREAM_PREFETCH:-10}
AUTOMATION_EXCHANGE_NAME: ${AUTOMATION_EXCHANGE_NAME:-plane.event_stream}
AUTOMATION_EVENT_TYPES: ${AUTOMATION_EVENT_TYPES:-issue.}
services:
admin:
@@ -285,6 +307,12 @@ services:
- ${INSTALL_DIR:-./plane}/data/minio/uploads:/export
- ${INSTALL_DIR:-./plane}/data/minio/data:/data
iframely:
image: artifacts.plane.so/makeplane/iframely:v1.2.0
restart: unless-stopped
deploy:
replicas: ${IFRAMELY_REPLICAS:-1}
silo:
image: artifacts.plane.so/makeplane/silo-commercial:${APP_RELEASE_VERSION}
environment:
@@ -311,6 +339,31 @@ services:
restart: unless-stopped
deploy:
replicas: ${EMAIL_REPLICAS:-1}
automation-consumer:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
command: ./bin/docker-entrypoint-automation-consumer.sh
environment:
<<: [*automation-consumer-env, *app-env, *docstore-env]
restart: unless-stopped
deploy:
replicas: ${AUTOMATION_CONSUMER_REPLICAS:-1}
depends_on:
- plane-db
- plane-mq
outbox-poller:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
command: ./bin/docker-entrypoint-outbox-poller.sh
environment:
<<: [*outbox-poller-env, *app-env]
restart: unless-stopped
deploy:
replicas: ${OUTBOX_POLLER_REPLICAS:-1}
depends_on:
- plane-db
- plane-mq
# Comment this if you already have a reverse proxy running
proxy:
image: artifacts.plane.so/makeplane/proxy-commercial:${APP_RELEASE_VERSION}

View File

@@ -1,6 +1,6 @@
INSTALL_DIR=/opt/plane
DOMAIN_NAME=localhost
APP_RELEASE_VERSION=v1.10.0
APP_RELEASE_VERSION=v1.14.0
WEB_REPLICAS=1
SPACE_REPLICAS=1
@@ -11,6 +11,9 @@ BEAT_WORKER_REPLICAS=1
LIVE_REPLICAS=1
SILO_REPLICAS=1
EMAIL_REPLICAS=1
OUTBOX_POLLER_REPLICAS=1
AUTOMATION_CONSUMER_REPLICAS=1
IFRAMELY_REPLICAS=1
LISTEN_HTTP_PORT=80
LISTEN_HTTPS_PORT=443
@@ -116,6 +119,7 @@ API_KEY_RATE_LIMIT=60/minute
# Live Server Secret Key
LIVE_SERVER_SECRET_KEY=htbqvBJAgpm9bzvf3r4urJer0ENReatceh
IFRAMELY_URL=
# Email Configuration
LISTEN_SMTP_PORT_25=10025
@@ -129,4 +133,25 @@ LISTEN_SMTP_PORT_587=10587
SMTP_DOMAIN=0.0.0.0
TLS_CERT_PATH=
TLS_PRIV_KEY_PATH=
INTAKE_EMAIL_DOMAIN=example.com
INTAKE_EMAIL_DOMAIN=example.com
# Outbox Poller Envs
OUTBOX_POLLER_MEMORY_LIMIT_MB=512
OUTBOX_POLLER_INTERVAL_MIN=0.25
OUTBOX_POLLER_INTERVAL_MAX=2
OUTBOX_POLLER_BATCH_SIZE=250
OUTBOX_POLLER_MEMORY_CHECK_INTERVAL=30
OUTBOX_POLLER_POOL_SIZE=4
OUTBOX_POLLER_POOL_MIN_SIZE=2
OUTBOX_POLLER_POOL_MAX_SIZE=10
OUTBOX_POLLER_POOL_TIMEOUT=30.0
OUTBOX_POLLER_POOL_MAX_IDLE=300.0
OUTBOX_POLLER_POOL_MAX_LIFETIME=3600
OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT=5.0
OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL=60
# Automation Envs
AUTOMATION_EVENT_STREAM_QUEUE_NAME=plane.event_stream.automations
AUTOMATION_EVENT_STREAM_PREFETCH=10
AUTOMATION_EXCHANGE_NAME=plane.event_stream
AUTOMATION_EVENT_TYPES=issue.

View File

@@ -4,7 +4,7 @@
# logo: svgs/plane.svg
x-plane-commercial: &plane-commercial
APP_VERSION: ${APP_RELEASE_VERSION:-v1.13.0}
APP_VERSION: ${APP_RELEASE_VERSION:-v1.14.0}
APP_DOMAIN: ${SERVICE_URL_PLANE}
MACHINE_SIGNATURE: ${SERVICE_PASSWORD_64_MACHINESIGNATURE}
DEPLOY_PLATFORM: coolify
@@ -129,6 +129,28 @@ x-app-env: &app-env
x-live-env: &live-env
API_BASE_URL: http://api:8000
LIVE_SERVER_SECRET_KEY: ${SERVICE_PASSWORD_64_LIVESERVERSECRETKEY}
IFRAMELY_URL: ${IFRAMELY_URL:-http://iframely:8061}
x-outbox-poller-env: &outbox-poller-env
OUTBOX_POLLER_MEMORY_LIMIT_MB: ${OUTBOX_POLLER_MEMORY_LIMIT_MB:-512}
OUTBOX_POLLER_INTERVAL_MIN: ${OUTBOX_POLLER_INTERVAL_MIN:-0.25}
OUTBOX_POLLER_INTERVAL_MAX: ${OUTBOX_POLLER_INTERVAL_MAX:-2}
OUTBOX_POLLER_BATCH_SIZE: ${OUTBOX_POLLER_BATCH_SIZE:-250}
OUTBOX_POLLER_MEMORY_CHECK_INTERVAL: ${OUTBOX_POLLER_MEMORY_CHECK_INTERVAL:-30}
OUTBOX_POLLER_POOL_SIZE: ${OUTBOX_POLLER_POOL_SIZE:-4}
OUTBOX_POLLER_POOL_MIN_SIZE: ${OUTBOX_POLLER_POOL_MIN_SIZE:-2}
OUTBOX_POLLER_POOL_MAX_SIZE: ${OUTBOX_POLLER_POOL_MAX_SIZE:-10}
OUTBOX_POLLER_POOL_TIMEOUT: ${OUTBOX_POLLER_POOL_TIMEOUT:-30.0}
OUTBOX_POLLER_POOL_MAX_IDLE: ${OUTBOX_POLLER_POOL_MAX_IDLE:-300.0}
OUTBOX_POLLER_POOL_MAX_LIFETIME: ${OUTBOX_POLLER_POOL_MAX_LIFETIME:-3600}
OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT: ${OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT:-5.0}
OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL: ${OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL:-30}
x-automation-consumer-env: &automation-consumer-env
AUTOMATION_EVENT_STREAM_QUEUE_NAME: ${AUTOMATION_EVENT_STREAM_QUEUE_NAME:-plane.event_stream.automations}
AUTOMATION_EVENT_STREAM_PREFETCH: ${AUTOMATION_EVENT_STREAM_PREFETCH:-10}
AUTOMATION_EXCHANGE_NAME: ${AUTOMATION_EXCHANGE_NAME:-plane.event_stream}
AUTOMATION_EVENT_TYPES: ${AUTOMATION_EVENT_TYPES:-issue.}
services:
admin:
@@ -295,6 +317,13 @@ services:
- uploads:/export
- minio_data:/data
iframely:
image: artifacts.plane.so/makeplane/iframely:v1.2.0
deploy:
replicas: ${IFRAMELY_REPLICAS:-1}
restart_policy:
condition: on-failure
silo:
image: artifacts.plane.so/makeplane/silo-commercial:${APP_RELEASE_VERSION:-v1.x.x}
restart: unless-stopped
@@ -306,6 +335,32 @@ services:
- plane-redis
- plane-mq
automation-consumer:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION:-v1.x.x}
command: ./bin/docker-entrypoint-automation-consumer.sh
environment:
<<: [ *automation-consumer-env, *app-env, *docstore-env ]
deploy:
replicas: ${AUTOMATION_CONSUMER_REPLICAS:-1}
restart_policy:
condition: on-failure
depends_on:
- plane-db
- plane-mq
outbox-poller:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION:-v1.x.x}
command: ./bin/docker-entrypoint-outbox-poller.sh
environment:
<<: [ *outbox-poller-env, *app-env ]
deploy:
replicas: ${OUTBOX_POLLER_REPLICAS:-1}
restart_policy:
condition: on-failure
depends_on:
- plane-db
- plane-mq
# Comment this if you already have a reverse proxy running
proxy:
image: artifacts.plane.so/makeplane/proxy-commercial:${APP_RELEASE_VERSION:-v1.x.x}

View File

@@ -4,7 +4,7 @@ networks:
services:
admin:
image: artifacts.plane.so/makeplane/admin-commercial:v1.13.0
image: artifacts.plane.so/makeplane/admin-commercial:v1.14.0
restart: unless-stopped
networks:
- systemd-plane-nw
@@ -13,7 +13,7 @@ services:
- web
web:
image: artifacts.plane.so/makeplane/web-commercial:v1.13.0
image: artifacts.plane.so/makeplane/web-commercial:v1.14.0
restart: unless-stopped
networks:
- systemd-plane-nw
@@ -22,7 +22,7 @@ services:
- worker
space:
image: artifacts.plane.so/makeplane/space-commercial:v1.13.0
image: artifacts.plane.so/makeplane/space-commercial:v1.14.0
restart: unless-stopped
networks:
- systemd-plane-nw
@@ -31,7 +31,7 @@ services:
- web
live:
image: artifacts.plane.so/makeplane/live-commercial:v1.13.0
image: artifacts.plane.so/makeplane/live-commercial:v1.14.0
restart: unless-stopped
env_file:
- /opt/plane/plane.env
@@ -42,7 +42,7 @@ services:
- web
monitor:
image: artifacts.plane.so/makeplane/monitor-commercial:v1.13.0
image: artifacts.plane.so/makeplane/monitor-commercial:v1.14.0
restart: unless-stopped
env_file:
- /opt/plane/plane.env
@@ -55,7 +55,7 @@ services:
- systemd-plane-nw
api:
image: artifacts.plane.so/makeplane/backend-commercial:v1.13.0
image: artifacts.plane.so/makeplane/backend-commercial:v1.14.0
command: ./bin/docker-entrypoint-api-ee.sh
restart: unless-stopped
env_file:
@@ -72,7 +72,7 @@ services:
- plane-redis
worker:
image: artifacts.plane.so/makeplane/backend-commercial:v1.13.0
image: artifacts.plane.so/makeplane/backend-commercial:v1.14.0
command: ./bin/docker-entrypoint-worker.sh
restart: unless-stopped
env_file:
@@ -90,7 +90,7 @@ services:
- plane-redis
beat-worker:
image: artifacts.plane.so/makeplane/backend-commercial:v1.13.0
image: artifacts.plane.so/makeplane/backend-commercial:v1.14.0
command: ./bin/docker-entrypoint-beat.sh
restart: unless-stopped
env_file:
@@ -108,7 +108,7 @@ services:
- plane-redis
migrator:
image: artifacts.plane.so/makeplane/backend-commercial:v1.13.0
image: artifacts.plane.so/makeplane/backend-commercial:v1.14.0
command: ./bin/docker-entrypoint-migrator.sh
restart: "no"
env_file:
@@ -156,6 +156,12 @@ services:
volumes:
- /opt/plane/data/rabbitmq:/var/lib/rabbitmq
iframely:
image: artifacts.plane.so/makeplane/iframely:v1.2.0
restart: unless-stopped
networks:
- systemd-plane-nw
plane-minio:
image: minio/minio:latest
command: server /export --console-address ":9090"
@@ -166,10 +172,9 @@ services:
- systemd-plane-nw
volumes:
- /opt/plane/data/minio:/export
silo:
image: artifacts.plane.so/makeplane/silo-commercial:v1.13.0
image: artifacts.plane.so/makeplane/silo-commercial:v1.14.0
restart: unless-stopped
env_file:
- /opt/plane/plane.env
@@ -179,9 +184,33 @@ services:
- plane-redis
- plane-mq
automation-consumer:
image: artifacts.plane.so/makeplane/backend-commercial:v1.14.0
command: ./bin/docker-entrypoint-automation-consumer.sh
restart: unless-stopped
env_file:
- /opt/plane/plane.env
networks:
- systemd-plane-nw
depends_on:
- plane-db
- plane-mq
outbox-poller:
image: artifacts.plane.so/makeplane/backend-commercial:v1.14.0
command: ./bin/docker-entrypoint-outbox-poller.sh
restart: unless-stopped
env_file:
- /opt/plane/plane.env
networks:
- systemd-plane-nw
depends_on:
- plane-db
- plane-mq
# Comment this if you already have a reverse proxy running
proxy:
image: artifacts.plane.so/makeplane/proxy-commercial:v1.13.0
image: artifacts.plane.so/makeplane/proxy-commercial:v1.14.0
restart: unless-stopped
env_file:
- /opt/plane/plane.env

View File

@@ -190,6 +190,17 @@ Restart=always
---
# iframely.container
[Container]
EnvironmentFile=/opt/plane/plane.env
Image=artifacts.plane.so/makeplane/iframely:v1.2.0
Network=systemd-plane-nw
[Service]
Restart=always
---
# silo.container
[Unit]
Requires=plane-redis.service plane-mq.service
@@ -205,6 +216,38 @@ Restart=always
---
# automation-consumer.container
[Unit]
Requires=plane-db.service plane-mq.service
After=plane-db.service plane-mq.service
[Container]
EnvironmentFile=/opt/plane/plane.env
Exec=./bin/docker-entrypoint-automation-consumer.sh
Image=artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
Network=systemd-plane-nw
[Service]
Restart=always
---
# outbox-poller.container
[Unit]
Requires=plane-db.service plane-mq.service
After=plane-db.service plane-mq.service
[Container]
EnvironmentFile=/opt/plane/plane.env
Exec=./bin/docker-entrypoint-outbox-poller.sh
Image=artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
Network=systemd-plane-nw
[Service]
Restart=always
---
# proxy.container
[Unit]
Requires=web.service api.service space.service admin.service live.service

View File

@@ -1,6 +1,6 @@
#Quadlets additional envs
APP_DOMAIN=localhost
APP_VERSION=v1.13.0
APP_VERSION=v1.14.0
SERVICE_HTTP_WEB=systemd-web:3000
SERVICE_HTTP_API=systemd-api:8000
SERVICE_HTTP_LIVE=systemd-live:3000

View File

@@ -1,5 +1,5 @@
x-plane: &plane
APP_VERSION: ${APP_RELEASE_VERSION:-v1.13.0}
APP_VERSION: ${APP_RELEASE_VERSION:-v1.14.0}
APP_DOMAIN: ${DOMAIN_NAME:-localhost}
MACHINE_SIGNATURE: ${MACHINE_SIGNATURE}
DEPLOY_PLATFORM: docker_compose
@@ -123,6 +123,28 @@ x-app-env: &app-env
x-live-env: &live-env
API_BASE_URL: ${API_BASE_URL:-http://api:8000}
LIVE_SERVER_SECRET_KEY: ${LIVE_SERVER_SECRET_KEY:-htbqvBJAgpm9bzvf3r4urJer0ENReatceh}
IFRAMELY_URL: ${IFRAMELY_URL:-http://iframely:8061}
x-outbox-poller-env: &outbox-poller-env
OUTBOX_POLLER_MEMORY_LIMIT_MB: ${OUTBOX_POLLER_MEMORY_LIMIT_MB:-512}
OUTBOX_POLLER_INTERVAL_MIN: ${OUTBOX_POLLER_INTERVAL_MIN:-0.25}
OUTBOX_POLLER_INTERVAL_MAX: ${OUTBOX_POLLER_INTERVAL_MAX:-2}
OUTBOX_POLLER_BATCH_SIZE: ${OUTBOX_POLLER_BATCH_SIZE:-250}
OUTBOX_POLLER_MEMORY_CHECK_INTERVAL: ${OUTBOX_POLLER_MEMORY_CHECK_INTERVAL:-30}
OUTBOX_POLLER_POOL_SIZE: ${OUTBOX_POLLER_POOL_SIZE:-4}
OUTBOX_POLLER_POOL_MIN_SIZE: ${OUTBOX_POLLER_POOL_MIN_SIZE:-2}
OUTBOX_POLLER_POOL_MAX_SIZE: ${OUTBOX_POLLER_POOL_MAX_SIZE:-10}
OUTBOX_POLLER_POOL_TIMEOUT: ${OUTBOX_POLLER_POOL_TIMEOUT:-30.0}
OUTBOX_POLLER_POOL_MAX_IDLE: ${OUTBOX_POLLER_POOL_MAX_IDLE:-300.0}
OUTBOX_POLLER_POOL_MAX_LIFETIME: ${OUTBOX_POLLER_POOL_MAX_LIFETIME:-3600}
OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT: ${OUTBOX_POLLER_POOL_RECONNECT_TIMEOUT:-5.0}
OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL: ${OUTBOX_POLLER_POOL_HEALTH_CHECK_INTERVAL:-30}
x-automation-consumer-env: &automation-consumer-env
AUTOMATION_EVENT_STREAM_QUEUE_NAME: ${AUTOMATION_EVENT_STREAM_QUEUE_NAME:-plane.event_stream.automations}
AUTOMATION_EVENT_STREAM_PREFETCH: ${AUTOMATION_EVENT_STREAM_PREFETCH:-10}
AUTOMATION_EXCHANGE_NAME: ${AUTOMATION_EXCHANGE_NAME:-plane.event_stream}
AUTOMATION_EVENT_TYPES: ${AUTOMATION_EVENT_TYPES:-issue.}
services:
admin:
@@ -132,8 +154,8 @@ services:
restart_policy:
condition: on-failure
depends_on:
- api
- web
- api
- web
web:
image: artifacts.plane.so/makeplane/web-commercial:${APP_RELEASE_VERSION}
@@ -142,8 +164,8 @@ services:
restart_policy:
condition: on-failure
depends_on:
- api
- worker
- api
- worker
space:
image: artifacts.plane.so/makeplane/space-commercial:${APP_RELEASE_VERSION}
@@ -152,27 +174,27 @@ services:
restart_policy:
condition: on-failure
depends_on:
- api
- web
- api
- web
live:
image: artifacts.plane.so/makeplane/live-commercial:${APP_RELEASE_VERSION}
environment:
<<: [ *live-env, *redis-env ]
<<: [*live-env, *redis-env]
deploy:
replicas: ${LIVE_REPLICAS:-1}
restart_policy:
condition: on-failure
depends_on:
- api
- web
- api
- web
monitor:
image: artifacts.plane.so/makeplane/monitor-commercial:${APP_RELEASE_VERSION}
volumes:
- monitor_data:/app
- monitor_data:/app
environment:
<<: [ *plane, *monitor-env ]
<<: [*plane, *monitor-env]
deploy:
replicas: 1
restart_policy:
@@ -182,16 +204,16 @@ services:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
command: ./bin/docker-entrypoint-api-ee.sh
environment:
<<: [ *plane, *app-env, *pg-env, *redis-env, *rabbitmq-env, *docstore-env ]
<<: [*plane, *app-env, *pg-env, *redis-env, *rabbitmq-env, *docstore-env]
deploy:
replicas: ${API_REPLICAS:-1}
restart_policy:
condition: on-failure
volumes:
- api_logs:/code/plane/logs
- api_logs:/code/plane/logs
depends_on:
- plane-db
- plane-redis
- plane-db
- plane-redis
worker:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
@@ -203,48 +225,48 @@ services:
restart_policy:
condition: on-failure
volumes:
- worker_logs:/code/plane/logs
- worker_logs:/code/plane/logs
depends_on:
- api
- plane-db
- plane-redis
- api
- plane-db
- plane-redis
beat-worker:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
command: ./bin/docker-entrypoint-beat.sh
environment:
<<: [ *plane, *app-env, *pg-env, *redis-env, *rabbitmq-env, *docstore-env ]
<<: [*plane, *app-env, *pg-env, *redis-env, *rabbitmq-env, *docstore-env]
deploy:
replicas: ${BEAT_WORKER_REPLICAS:-1}
restart_policy:
condition: on-failure
volumes:
- beat_worker_logs:/code/plane/logs
- beat_worker_logs:/code/plane/logs
depends_on:
- api
- plane-db
- plane-redis
- api
- plane-db
- plane-redis
migrator:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
command: ./bin/docker-entrypoint-migrator.sh
environment:
<<: [ *plane, *app-env, *pg-env, *redis-env, *rabbitmq-env, *docstore-env ]
<<: [*plane, *app-env, *pg-env, *redis-env, *rabbitmq-env, *docstore-env]
deploy:
replicas: 1
restart_policy:
condition: on-failure
volumes:
- migrator_logs:/code/plane/logs
- migrator_logs:/code/plane/logs
depends_on:
- plane-db
- plane-redis
- plane-db
- plane-redis
plane-db:
image: postgres:15.7-alpine
command: postgres -c 'max_connections=1000'
environment:
<<: *pg-env
<<: [*pg-env]
deploy:
replicas: 1
restart_policy:
@@ -255,38 +277,45 @@ services:
plane-redis:
image: valkey/valkey:7.2.5-alpine
environment:
<<: *redis-env
<<: [*redis-env]
deploy:
replicas: 1
restart_policy:
condition: on-failure
volumes:
- redisdata:/data
- redisdata:/data
plane-mq:
image: rabbitmq:3.13.6-management-alpine
environment:
<<: *rabbitmq-env
<<: [*rabbitmq-env]
deploy:
replicas: 1
restart_policy:
condition: on-failure
volumes:
- rabbitmq_data:/var/lib/rabbitmq
- rabbitmq_data:/var/lib/rabbitmq
plane-minio:
image: minio/minio:latest
command: server /export --console-address ":9090"
environment:
<<: *docstore-env
<<: [*docstore-env]
deploy:
replicas: 1
restart_policy:
condition: on-failure
volumes:
- uploads:/export
- minio_data:/data
- uploads:/export
- minio_data:/data
iframely:
image: artifacts.plane.so/makeplane/iframely:v1.2.0
deploy:
replicas: ${IFRAMELY_REPLICAS:-1}
restart_policy:
condition: on-failure
silo:
image: artifacts.plane.so/makeplane/silo-commercial:${APP_RELEASE_VERSION}
restart: unless-stopped
@@ -298,12 +327,38 @@ services:
- plane-redis
- plane-mq
automation-consumer:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
command: ./bin/docker-entrypoint-automation-consumer.sh
environment:
<<: [*automation-consumer-env, *app-env, *docstore-env]
deploy:
replicas: ${AUTOMATION_CONSUMER_REPLICAS:-1}
restart_policy:
condition: on-failure
depends_on:
- plane-db
- plane-mq
outbox-poller:
image: artifacts.plane.so/makeplane/backend-commercial:${APP_RELEASE_VERSION}
command: ./bin/docker-entrypoint-outbox-poller.sh
environment:
<<: [*outbox-poller-env, *app-env]
deploy:
replicas: ${OUTBOX_POLLER_REPLICAS:-1}
restart_policy:
condition: on-failure
depends_on:
- plane-db
- plane-mq
# Comment this if you already have a reverse proxy running
proxy:
image: artifacts.plane.so/makeplane/proxy-commercial:${APP_RELEASE_VERSION}
restart: unless-stopped
environment:
<<: *proxy-env
<<: [*proxy-env]
ports:
- target: 80
published: ${LISTEN_HTTP_PORT:-80}
@@ -314,14 +369,14 @@ services:
protocol: tcp
mode: host
volumes:
- proxy_config:/config
- proxy_data:/data
- proxy_config:/config
- proxy_data:/data
depends_on:
- web
- api
- space
- admin
- live
- web
- api
- space
- admin
- live
volumes:
proxy_config: {}