feat(service): add OrangeHRM and Grist services (#5212)

This commit is contained in:
howardshand
2025-05-23 12:16:39 -05:00
committed by GitHub
parent 16a299043e
commit fbfeee4782
4 changed files with 158 additions and 0 deletions

18
public/svgs/grist.svg Normal file
View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 63.1 (92452) - https://sketch.com -->
<title>grist-logo-icon-transparent</title>
<desc>Created with Sketch.</desc>
<g id="grist-logo-icon-transparent" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group" transform="translate(2.000000, 2.000000)" fill-rule="nonzero">
<path d="M28,0 L23.6428184,0 C21.6322666,0 20,1.79548025 20,4.00705058 L20,8 L24.3914994,8 C26.3831172,8 28,6.22135696 28,4.03062271 L28,0 Z" id="Path" fill="#16B378"></path>
<path d="M18,0 L13.6428184,0 C11.6322666,0 10,1.79548025 10,4.00705058 L10,8 L14.3914994,8 C16.3831172,8 18,6.22135696 18,4.03062271 L18,0 Z" id="Path" fill="#16B378" transform="translate(14.000000, 4.000000) scale(-1, 1) translate(-14.000000, -4.000000) "></path>
<path d="M8,10 L3.64281839,10 C1.63226664,10 0,11.7954803 0,14.0070506 L0,18 L4.39149942,18 C6.38311718,18 8,16.221357 8,14.0306227 L8,10 Z" id="Path" fill="#F9AE41" transform="translate(4.000000, 14.000000) scale(-1, 1) translate(-4.000000, -14.000000) "></path>
<path d="M8,20 L3.64281839,20 C1.63226664,20 0,21.7954803 0,24.0070506 L0,28 L4.39149942,28 C6.38311718,28 8,26.221357 8,24.0306227 L8,20 Z" id="Path" fill="#F9AE41" transform="translate(4.000000, 24.000000) scale(-1, 1) translate(-4.000000, -24.000000) "></path>
<path d="M18,10 L13.6428184,10 C11.6322666,10 10,11.7954803 10,14.0070506 L10,18 L14.3914994,18 C16.3831172,18 18,16.221357 18,14.0306227 L18,10 Z" id="Path" fill="#D2D2D2" transform="translate(14.000000, 14.000000) scale(-1, 1) translate(-14.000000, -14.000000) "></path>
<path d="M28,10 L23.6428184,10 C21.6322666,10 20,11.7954803 20,14.0070506 L20,18 L24.3914994,18 C26.3831172,18 28,16.221357 28,14.0306227 L28,10 Z" id="Path" fill="#D2D2D2"></path>
<path d="M18,20 L13.6428184,20 C11.6322666,20 10,21.7954803 10,24.0070506 L10,28 L14.3914994,28 C16.3831172,28 18,26.221357 18,24.0306227 L18,20 Z" id="Path" fill="#D2D2D2" transform="translate(14.000000, 24.000000) scale(-1, 1) translate(-14.000000, -24.000000) "></path>
<path d="M28,20 L23.6428184,20 C21.6322666,20 20,21.7954803 20,24.0070506 L20,28 L24.3914994,28 C26.3831172,28 28,26.221357 28,24.0306227 L28,20 Z" id="Path" fill="#D2D2D2"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" class="iconify iconify--whh" width="0.88em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 896 1024" style="transform: rotate(360deg);"><path d="M544 256h-32q0-97 135-167q32-17 57-25q-45 0-92 19.5t-82 48t-57.5 61.5t-24.5 60q-33-5-48.5-18.5T384 192q0-35 45.5-80.5T544 33T672 0q55 0 95 8t53 16l12 8q0 12-32 48.5T724.5 156t-95 69.5T544 256zm-32 256q-14-7-39-17.5T380.5 466T256 448q-52 0-90 50.5T128 640q0 62 54.5 122T319 859t161 37q77 0 144.5-37.5T730 762t38-122q0-173-186-270q-57-30-134-50q126 0 226 35t161 108.5T896 640q0 104-60 192.5t-163 140t-225 51.5t-225-51.5t-163-140T0 640q0-69 21.5-120.5t59-80t81-42T256 384q63 0 122.5 18.5T475 451t37 61z" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 825 B

View File

@@ -0,0 +1,90 @@
# documentation: https://support.getgrist.com/
# slogan: Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database. * Requires an OIDC provider set up.
# tags: lowcode, nocode, spreadsheet, database, relational
# logo: svgs/grist.svg
# port: 443
services:
grist:
image: gristlabs/grist
environment:
- TZ=${TZ:-UTC}
- GRIST_SUPPORT_ANON=${SUPPORT_ANON:-false}
- GRIST_FORCE_LOGIN=${FORCE_LOGIN:-true}
- COOKIE_MAX_AGE=${COOKIE_MAX_AGE:-86400000}
- GRIST_PAGE_TITLE_SUFFIX=${PAGE_TITLE_SUFFIX:- - Suffix}
- GRIST_HIDE_UI_ELEMENTS=${HIDE_UI_ELEMENTS:-billing,sendToDrive,supportGrist,multiAccounts,tutorials}
- GRIST_UI_FEATURES=${UI_FEATURES:-helpCenter,billing,templates,createSite,multiSite,sendToDrive,tutorials,supportGrist}
- SERVICE_FQDN_GRIST=${SERVICE_FQDN_GRIST}
- GRIST_DOMAIN=${DOMAIN:-domain.com}
- APP_HOME_URL=${SERVICE_FQDN_GRIST}
- APP_DOC_URL=${SERVICE_FQDN_GRIST}
- GRIST_DEFAULT_EMAIL=${DEFAULT_EMAIL:-super.user@email.com}
- GRIST_ORG_IN_PATH=${ORG_IN_PATH:-true}
- GRIST_OIDC_SP_HOST=${SERVICE_FQDN_GRIST}
- GRIST_OIDC_IDP_SCOPES=${OIDC_IDP_SCOPES:-openid profile email}
- GRIST_OIDC_IDP_SKIP_END_SESSION_ENDPOINT=${OIDC_IDP_SKIP_END_SESSION_ENDPOINT:-false}
- GRIST_OIDC_IDP_ISSUER=${OIDC_IDP_ISSUER:-https://auth.domain.com/application/o/grist/}
- GRIST_OIDC_IDP_CLIENT_ID=${OIDC_IDP_CLIENT_ID:-your-client-id}
- GRIST_OIDC_IDP_CLIENT_SECRET=${OIDC_IDP_CLIENT_SECRET:-your-client-secret}
- GRIST_SESSION_SECRET=${SESSION_SECRET:-$SERVICE_REALBASE64_128}
- GRIST_HOME_INCLUDE_STATIC=${HOME_INCLUDE_STATIC:-true}
- GRIST_SANDBOX_FLAVOR=${SANDBOX_FLAVOR:-gvisor}
- ALLOWED_WEBHOOK_DOMAINS=${ALLOWED_WEBHOOK_DOMAINS:-n8n.domain.com}
- COMMENTS=${COMMENTS:-true}
- TYPEORM_TYPE=${TYPEORM_TYPE:-postgres}
- TYPEORM_DATABASE=${POSTGRES_DATABASE:-postgres}
- TYPEORM_USERNAME=${POSTGRES_USERNAME:-postgres}
- TYPEORM_PASSWORD=${POSTGRES_PASSWORD:-$SERVICE_PASSWORD_POSTGRES}
- TYPEORM_HOST=${TYPEORM_HOST:-postgres}
- TYPEORM_PORT=${TYPEORM_PORT:-5432}
- TYPEORM_LOGGING=${TYPEORM_LOGGING:-false}
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
- GRIST_HELP_CENTER=${HELP_CENTER:-$SERVICE_FQDN_GRIST/help}
- GRIST_TERMS_OF_SERVICE_URL=${TERMS_OF_SERVICE_URL:-$SERVICE_FQDN_GRIST/terms}
- FREE_COACHING_CALL_URL=${FREE_COACHING_CALL_URL:-super.user@email.com}
- GRIST_CONTACT_SUPPORT_URL=${CONTACT_SUPPORT_URL:-super.user@email.com}
volumes:
- 'grist-data:/persist'
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test:
- CMD
- node
- '-e'
- "require('http').get('http://localhost:8484/status', res => process.exit(res.statusCode === 200 ? 0 : 1))"
- '> /dev/null 2>&1'
interval: 5s
timeout: 20s
retries: 10
postgres:
image: 'postgres:16'
environment:
- POSTGRES_DB=${POSTGRES_DATABASE:-postgres}
- POSTGRES_USER=${POSTGRES_USERNAME:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-$SERVICE_PASSWORD_POSTGRES}
volumes:
- 'postgres-data:/var/lib/postgresql/data'
healthcheck:
test:
- CMD-SHELL
- 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'
interval: 5s
timeout: 10s
retries: 20
redis:
image: 'redis:7'
volumes:
- 'redis-data:/data'
healthcheck:
test:
- CMD
- redis-cli
- PING
interval: 5s
timeout: 10s
retries: 20

View File

@@ -0,0 +1,49 @@
# documentation: https://starterhelp.orangehrm.com/hc/en-us
# slogan: Host OrangeHRM on your own infrastructure. This deployment option provides the greatest level of flexibility and control.
# tags: HR, HRIS, HRMS, human resource management, OrangeHRM, HR management
# logo: svgs/orangehrm.svg
# port: 80
services:
orangehrm:
image: 'orangehrm/orangehrm:latest'
platform: linux/amd64
environment:
- SERVICE_FQDN_ORANGEHRM_80
- ORANGEHRM_DATABASE_HOST=mariadb
- ORANGEHRM_DATABASE_USER=${SERVICE_USER_ORANGEHRM}
- ORANGEHRM_DATABASE_PASSWORD=${SERVICE_PASSWORD_ORANGEHRM}
- ORANGEHRM_DATABASE_NAME=${MARIADB_DATABASE:-orangehrm}
volumes:
- 'orangehrm-data:/orangehrm'
depends_on:
- mariadb
links:
- 'mariadb:mariadb'
healthcheck:
test:
- CMD
- curl
- '-f'
- 'http://127.0.0.1'
interval: 2s
timeout: 10s
retries: 10
mariadb:
image: 'mariadb:10.11'
volumes:
- 'mariadb-data:/var/lib/mysql'
environment:
- MARIADB_ROOT_PASSWORD=${SERVICE_PASSWORD_ROOT}
- MARIADB_DATABASE=${MARIADB_DATABASE:-orangehrm}
- MARIADB_USER=${SERVICE_USER_ORANGEHRM}
- MARIADB_PASSWORD=${SERVICE_PASSWORD_ORANGEHRM}
healthcheck:
test:
- CMD
- healthcheck.sh
- '--connect'
- '--innodb_initialized'
interval: 5s
timeout: 20s
retries: 10