Merge pull request #3763 from coollabsio/new-services
Feat: Service fixes and new services
10
public/svgs/dozzle.svg
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="256px" height="256px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<g><path style="opacity:1" fill="#222222" d="M -0.5,-0.5 C 84.8333,-0.5 170.167,-0.5 255.5,-0.5C 255.5,84.8333 255.5,170.167 255.5,255.5C 170.167,255.5 84.8333,255.5 -0.5,255.5C -0.5,170.167 -0.5,84.8333 -0.5,-0.5 Z"/></g>
|
||||||
|
<g><path style="opacity:1" fill="#fbda56" d="M 161.5,179.5 C 160.957,179.56 160.624,179.893 160.5,180.5C 184.157,181.5 207.824,181.833 231.5,181.5C 231.5,186.833 231.5,192.167 231.5,197.5C 199.167,197.5 166.833,197.5 134.5,197.5C 134.813,194.753 134.48,192.086 133.5,189.5C 132.893,189.624 132.56,189.957 132.5,190.5C 115.506,204.774 95.8393,210.94 73.5,209C 58.1984,207.118 42.8651,205.618 27.5,204.5C 32.8364,149.128 38.5031,93.795 44.5,38.5C 59.7916,40.3257 75.1249,41.8257 90.5,43C 113.794,44.8067 132.127,55.14 145.5,74C 173.165,74.5 200.831,74.6666 228.5,74.5C 228.91,80.6208 228.41,86.6208 227,92.5C 205.158,121.53 183.324,150.53 161.5,179.5 Z"/></g>
|
||||||
|
<g><path style="opacity:1" fill="#222222" d="M 64.5,58.5 C 74.4468,59.9949 84.4468,61.1616 94.5,62C 117.983,67.1515 131.483,81.6515 135,105.5C 135.624,124.968 132.958,143.968 127,162.5C 119.558,178.614 107.058,187.781 89.5,190C 76.8083,190.293 64.1416,189.793 51.5,188.5C 56.0225,145.186 60.3558,101.852 64.5,58.5 Z"/></g>
|
||||||
|
<g><path style="opacity:1" fill="#252422" d="M 153.5,93.5 C 169.328,92.3386 185.328,92.1719 201.5,93C 185,114.833 168.5,136.667 152,158.5C 155.973,140.11 157.307,121.443 156,102.5C 155.34,99.322 154.507,96.322 153.5,93.5 Z"/></g>
|
||||||
|
<g><path style="opacity:1" fill="#6d6133" d="M 161.5,179.5 C 185.167,180.167 208.833,180.833 232.5,181.5C 232.167,181.5 231.833,181.5 231.5,181.5C 207.824,181.833 184.157,181.5 160.5,180.5C 160.624,179.893 160.957,179.56 161.5,179.5 Z"/></g>
|
||||||
|
<g><path style="opacity:1" fill="#d6ba4d" d="M 231.5,181.5 C 231.833,181.5 232.167,181.5 232.5,181.5C 232.5,187.167 232.5,192.833 232.5,198.5C 199.5,198.5 166.5,198.5 133.5,198.5C 133.806,195.615 133.473,192.948 132.5,190.5C 132.56,189.957 132.893,189.624 133.5,189.5C 134.48,192.086 134.813,194.753 134.5,197.5C 166.833,197.5 199.167,197.5 231.5,197.5C 231.5,192.167 231.5,186.833 231.5,181.5 Z"/></g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.4 KiB |
BIN
public/svgs/easyappointments.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
1
public/svgs/libreoffice.svg
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/svgs/organizr.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/svgs/soketi.jpeg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
public/svgs/soketi.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
17
public/svgs/supertokens.svg
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="44.869" height="40.302" viewBox="0 0 44.869 40.302">
|
||||||
|
<g id="Group_10325" data-name="Group 10325" transform="translate(0.516)">
|
||||||
|
<path id="Exclusion_1" data-name="Exclusion 1" d="M18.621,36.98c-.1,0-.2,0-.305-.008a7.383,7.383,0,0,1-3.67-1.338c-.308-.207-.615-.429-.912-.644l-.027-.019a16.427,16.427,0,0,0-1.965-1.286,7.348,7.348,0,0,0-3.4-.847l-.165,0a5.86,5.86,0,0,0-1.338.135A1.959,1.959,0,0,0,5.934,34.7a3.214,3.214,0,0,0,.3,1.18,3.066,3.066,0,0,1,.274.709h0c-.034,0-.122-.108-.289-.313-.665-.82-2.428-2.995-4.791-3.458A1.76,1.76,0,0,1,.306,30.1C6.2,21.434,6.931,18.338,9.672,6.822l.238-1q.261-1.1.55-2.3A1.773,1.773,0,0,1,11.5,2.3L14.818.918a1.759,1.759,0,0,1,.676-.135,1.8,1.8,0,0,1,.275.021A14.322,14.322,0,0,1,20.989,0h2.3a14.32,14.32,0,0,1,5.219.8,1.77,1.77,0,0,0-1.017.539l-10,.758h0l-.7-.757A1.773,1.773,0,0,0,15.77.805a5.9,5.9,0,0,0-1.814,1.1c-1.308,1.2-1.972,3.351-1.972,6.406V20.836c0,3.056.664,5.213,1.972,6.408,1.377,1.262,3.743,1.9,7.033,1.9h2.3c3.29,0,5.656-.64,7.033-1.9,1.308-1.2,1.972-3.354,1.972-6.408V8.31c0-3.053-.664-5.208-1.972-6.406A5.912,5.912,0,0,0,28.508.8a1.825,1.825,0,0,1,.274-.021,1.749,1.749,0,0,1,.675.135L32.779,2.3a1.773,1.773,0,0,1,1.036,1.223c.613,2.556,1.133,4.837,1.511,6.5,2.1,9.24,2.891,12.7,8.2,20.511a1.759,1.759,0,0,1-1.115,2.718A8.073,8.073,0,0,0,37.9,36.443c-.108.139-.155.2-.168.2a2.225,2.225,0,0,1,.195-.49l.118-.273a3.243,3.243,0,0,0,.293-1.18,1.9,1.9,0,0,0-.657-1.524,10.157,10.157,0,0,0-2.225-.28q-.118,0-.237,0a3.506,3.506,0,0,0-2.887,1.172,5,5,0,0,0-.3.455l-.013.022a4.346,4.346,0,0,1-.365.543,1.328,1.328,0,0,1-1.083.532A4.472,4.472,0,0,1,28.737,35c-.242-.122-.44-.222-.632-.3a5.773,5.773,0,0,0-2.236-.523,3.7,3.7,0,0,0-.643.055,7.689,7.689,0,0,0-2.771,1.336c-.194.126-.386.252-.579.374A6.007,6.007,0,0,1,18.621,36.98Z" transform="translate(0 2.822)" fill="#f93" stroke="rgba(0,0,0,0)" stroke-width="1"/>
|
||||||
|
<g id="Group_4056" data-name="Group 4056" transform="translate(5.914 22.19)">
|
||||||
|
<path id="Path_14227" data-name="Path 14227" d="M698.042,466.44l.162-2.728,2.46-.713,1.006,3.181A4.743,4.743,0,0,0,698.042,466.44Z" transform="translate(-680.16 -451.111)" fill="#db902e"/>
|
||||||
|
<path id="Path_14229" data-name="Path 14229" d="M660.956,448.452c0,.064,0,1.019.007,1.1-1.971-.35-3.581.3-3.53,1.77h-.017V450.9c-.081-2.846,1.322-5.229,2.111-7.863.647-2.175.943-8.8,1.467-6.608a14.459,14.459,0,0,1-.037,5.614,23.229,23.229,0,0,0,0,3.2Z" transform="translate(-657.412 -435.988)" fill="#db902e"/>
|
||||||
|
<path id="Path_14231" data-name="Path 14231" d="M722.715,448.452c0,.064,0,1.019-.007,1.1,1.724.09,3.581.3,3.53,1.77h.017V450.9c.081-2.846-1.322-5.229-2.11-7.863-.647-2.175-.943-8.8-1.467-6.608a14.438,14.438,0,0,0,.038,5.614,23.287,23.287,0,0,1,0,3.2Z" transform="translate(-693.804 -435.988)" fill="#db902e"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_1803" data-name="Group 1803" transform="translate(9.16)">
|
||||||
|
<path id="Path_14233" data-name="Path 14233" d="M678.914,391.217c3.483,0,4.746.813,5.128,1.162.671.615,1.056,2.193,1.056,4.328v12.525c0,2.135-.385,3.712-1.057,4.328-.381.349-1.643,1.161-5.127,1.161h-2.3c-3.483,0-4.746-.812-5.129-1.163-.671-.614-1.055-2.191-1.055-4.326V396.707c0-2.135.385-3.713,1.056-4.328.382-.349,1.645-1.162,5.128-1.162h2.3m0-5.644h-2.3q-6.052,0-8.94,2.644t-2.888,8.49v12.525q0,5.846,2.888,8.49t8.94,2.644h2.3q6.054,0,8.94-2.644t2.888-8.49V396.707q0-5.846-2.888-8.49t-8.94-2.644Z" transform="translate(-664.788 -385.573)" fill="#1a1a1a"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_1804" data-name="Group 1804" transform="translate(19.692 15.337)">
|
||||||
|
<ellipse id="Ellipse_669" data-name="Ellipse 669" cx="2.445" cy="2.445" rx="2.445" ry="2.445" transform="translate(0 0)" fill="#1a1a1a"/>
|
||||||
|
<path id="Path_14234" data-name="Path 14234" d="M693.3,432.955h-2.286a.517.517,0,0,1-.514-.566l.47-4.836a.516.516,0,0,1,.514-.466h1.344a.516.516,0,0,1,.514.466l.47,4.836A.517.517,0,0,1,693.3,432.955Z" transform="translate(-689.717 -424.151)" fill="#1a1a1a"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.9 KiB |
@@ -5,9 +5,8 @@
|
|||||||
# port: 9000
|
# port: 9000
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
authentik-server:
|
authentik-server:
|
||||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2024.2.2}
|
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2024.8.0}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: server
|
command: server
|
||||||
environment:
|
environment:
|
||||||
@@ -36,7 +35,7 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
authentik-worker:
|
authentik-worker:
|
||||||
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2024.2.2}
|
image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2024.8.0}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: worker
|
command: worker
|
||||||
environment:
|
environment:
|
||||||
@@ -73,7 +72,7 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
postgresql:
|
postgresql:
|
||||||
image: docker.io/library/postgres:12-alpine
|
image: docker.io/library/postgres:16-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
|
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
|
||||||
@@ -85,7 +84,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
||||||
- POSTGRES_DB=${POSTGRES_DB:-authentik}
|
- POSTGRES_DB=authentik
|
||||||
redis:
|
redis:
|
||||||
image: docker.io/library/redis:alpine
|
image: docker.io/library/redis:alpine
|
||||||
command: --save 60 1 --loglevel warning
|
command: --save 60 1 --loglevel warning
|
||||||
|
|||||||
32
templates/compose/dozzle-with-auth.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# ignore: true
|
||||||
|
# documentation: https://dozzle.dev/
|
||||||
|
# slogan: Dozzle is a simple and lightweight web UI for Docker logs.
|
||||||
|
# tags: dozzle,docker,logs,web-ui
|
||||||
|
# logo: svgs/dozzle.svg
|
||||||
|
# port: 8080
|
||||||
|
|
||||||
|
services:
|
||||||
|
dozzle:
|
||||||
|
image: amir20/dozzle:latest
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_DOZZLE_8080
|
||||||
|
- DOZZLE_AUTH_PROVIDER=simple
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- type: bind
|
||||||
|
source: /data/users.yml
|
||||||
|
target: /data/users.yml
|
||||||
|
content: |
|
||||||
|
users:
|
||||||
|
# "admin" here is username
|
||||||
|
admin:
|
||||||
|
name: "Admin"
|
||||||
|
# Just sha-256 which can be computed with "echo -n password | shasum -a 256"
|
||||||
|
password: "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"
|
||||||
|
email: me@email.net
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "/dozzle", "healthcheck"]
|
||||||
|
interval: 3s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
19
templates/compose/dozzle.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# documentation: https://dozzle.dev/guide/getting-started#running-with-docker
|
||||||
|
# slogan: Dozzle is a simple and lightweight web UI for Docker logs.
|
||||||
|
# tags: dozzle,docker,logs,web-ui
|
||||||
|
# logo: svgs/dozzle.svg
|
||||||
|
# port: 8080
|
||||||
|
|
||||||
|
services:
|
||||||
|
dozzle:
|
||||||
|
image: amir20/dozzle:latest
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_DOZZLE_8080
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "/dozzle", "healthcheck"]
|
||||||
|
interval: 3s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
35
templates/compose/easyappointments.yaml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# documentation: https://easyappointments.org/
|
||||||
|
# slogan: Schedule Anything. Let's start with easy! Get the best free online appointment scheduler on your server, today.
|
||||||
|
# tags: calendar, scheduling, database
|
||||||
|
# logo: svgs/easyappointments.png
|
||||||
|
# port: 80
|
||||||
|
|
||||||
|
services:
|
||||||
|
easyappointments:
|
||||||
|
image: alextselegidis/easyappointments:latest
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_EASYAPPOINTMENTS_80
|
||||||
|
- BASE_URL=${SERVICE_FQDN_EASYAPPOINTMENTS}
|
||||||
|
- DB_HOST=mysql
|
||||||
|
- DB_NAME=easyappointments
|
||||||
|
- DB_USERNAME=root
|
||||||
|
- DB_PASSWORD=${SERVICE_PASSWORD_EASYAPPOINTMENTS}
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 30
|
||||||
|
mysql:
|
||||||
|
image: mysql:8
|
||||||
|
volumes:
|
||||||
|
- easyappointments-mysql-data:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_EASYAPPOINTMENTS}
|
||||||
|
- MYSQL_DATABASE=easyappointments
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
21
templates/compose/libreoffice.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# documentation: https://docs.linuxserver.io/images/docker-libreoffice/
|
||||||
|
# slogan: LibreOffice is a free and powerful office suite.
|
||||||
|
# tags: office,document,spreadsheet,presentation,open-source
|
||||||
|
# logo: svgs/libreoffice.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
libreoffice:
|
||||||
|
image: lscr.io/linuxserver/libreoffice:latest
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_LIBREOFFICE_3000
|
||||||
|
- PUID=${PUID:-1000}
|
||||||
|
- PGID=${PGID:-1000}
|
||||||
|
- TZ=${TZ:-Etc/UTC}
|
||||||
|
volumes:
|
||||||
|
- libreoffice-config:/config
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
19
templates/compose/organizr.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# documentation: https://docs.organizr.app/
|
||||||
|
# slogan: Homelab Services Organizer
|
||||||
|
# tags: tool
|
||||||
|
# logo: svgs/organizr.png
|
||||||
|
# port: 80
|
||||||
|
|
||||||
|
services:
|
||||||
|
organizr:
|
||||||
|
image: organizr/organizr:latest
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_ORGANIZR_80
|
||||||
|
- branch=${branch:-v2-master}
|
||||||
|
volumes:
|
||||||
|
- organizr-data:/config
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -sf http://localhost:80 || exit 1"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 1s
|
||||||
|
retries: 3
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
services:
|
services:
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
image: rabbitmq:3-management
|
image: rabbitmq:3-management
|
||||||
|
hostname: "rabbitmq"
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_RABBITMQ_15672
|
- SERVICE_FQDN_RABBITMQ_15672
|
||||||
- RABBITMQ_DEFAULT_USER=$SERVICE_USER_RABBITMQ
|
- RABBITMQ_DEFAULT_USER=$SERVICE_USER_RABBITMQ
|
||||||
@@ -19,3 +20,5 @@ services:
|
|||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 30s
|
timeout: 30s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
volumes:
|
||||||
|
- rabbitmq-data:/var/lib/rabbitmq/
|
||||||
|
|||||||
23
templates/compose/soketi.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# documentation: https://docs.soketi.app
|
||||||
|
# slogan: Soketi is your simple, fast, and resilient open-source WebSockets server.
|
||||||
|
# tags: websockets,open,source,messaging
|
||||||
|
# logo: svgs/soketi.jpeg
|
||||||
|
# port: 6001
|
||||||
|
|
||||||
|
services:
|
||||||
|
soketi:
|
||||||
|
image: "quay.io/soketi/soketi:1.4-16-debian"
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_SOKETI_6001
|
||||||
|
- SOKETI_DEBUG=${DEBUG:-0}
|
||||||
|
- SOKETI_DEFAULT_APP_ID=${SOKETI_APP_ID}
|
||||||
|
- SOKETI_DEFAULT_APP_KEY=${SOKETI_APP_KEY}
|
||||||
|
- SOKETI_DEFAULT_APP_SECRET=${SOKETI_APP_SECRET}
|
||||||
|
- SOKETI_PUSHER_SCHEME=${SOKETI_PUSHER_SCHEME:-https}
|
||||||
|
- SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES=${DEFAULT_APP_ENABLE_CLIENT_MESSAGES}
|
||||||
|
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -f http://localhost:6001/ || exit 1"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 3
|
||||||
40
templates/compose/supertokens-with-mysql.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# documentation: https://supertokens.com/docs/guides
|
||||||
|
# slogan: An open-source authentication solution that simplifies the implementation of secure user authentication and session management for web and mobile applications.
|
||||||
|
# tags: supertokens,login,authentication,authorization,oauth,user-management,session-management,access-control,otp,magic-link,passwordless
|
||||||
|
# logo: svgs/supertokens.svg
|
||||||
|
# port: 3567
|
||||||
|
|
||||||
|
services:
|
||||||
|
supertokens:
|
||||||
|
image: 'registry.supertokens.io/supertokens/supertokens-mysql:latest'
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_SUPERTOKENS_3567
|
||||||
|
- API_KEYS=${API_KEYS:-}
|
||||||
|
- MYSQL_CONNECTION_URI=mysql://$SERVICE_USER_MYSQL:$SERVICE_PASSWORD_MYSQL@mysql:3306/${MYSQL_DATABASE:-supertokens}
|
||||||
|
healthcheck:
|
||||||
|
test: "bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e \"GET /hello HTTP/1.1\\r\\nhost: 127.0.0.1:3567\\r\\nConnection: close\\r\\n\\r\\n\" >&3 && cat <&3 | grep \"Hello\"'\n"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: 'mysql:latest'
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MYSQL
|
||||||
|
- MYSQL_USER=$SERVICE_USER_MYSQL
|
||||||
|
- MYSQL_PASSWORD=$SERVICE_PASSWORD_MYSQL
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE:-supertokens}
|
||||||
|
volumes:
|
||||||
|
- 'supertokens-mysql-data:/var/lib/mysql'
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD
|
||||||
|
- mysqladmin
|
||||||
|
- ping
|
||||||
|
- '-h'
|
||||||
|
- localhost
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
34
templates/compose/supertokens-with-postgresql.yaml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# documentation: https://supertokens.com/docs/guides
|
||||||
|
# slogan: An open-source authentication solution that simplifies the implementation of secure user authentication and session management for web and mobile applications.
|
||||||
|
# tags: supertokens,login,authentication,authorization,oauth,user-management,session-management,access-control,otp,magic-link,passwordless
|
||||||
|
# logo: svgs/supertokens.svg
|
||||||
|
# port: 3567
|
||||||
|
|
||||||
|
services:
|
||||||
|
supertokens:
|
||||||
|
image: registry.supertokens.io/supertokens/supertokens-postgresql:latest
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_SUPERTOKENS_3567
|
||||||
|
- API_KEYS=${API_KEYS:-}
|
||||||
|
- POSTGRESQL_CONNECTION_URI="postgresql://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRES_DB:-supertokens}"
|
||||||
|
healthcheck:
|
||||||
|
test: "bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e \"GET /hello HTTP/1.1\\r\\nhost: 127.0.0.1:3567\\r\\nConnection: close\\r\\n\\r\\n\" >&3 && cat <&3 | grep \"Hello\"'\n"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
postgres:
|
||||||
|
image: postgres:16
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=$SERVICE_USER_POSTGRESQL
|
||||||
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRESQL
|
||||||
|
- POSTGRES_DB=${POSTGRES_DB:-supertokens}
|
||||||
|
volumes:
|
||||||
|
- supertokens-postgres-data:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pg_isready", "-U", "$SERVICE_USER_POSTGRESQL", "-d", "${POSTGRES_DB:-supertokens}"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
@@ -1,22 +1,18 @@
|
|||||||
# documentation: https://www.windmill.dev/docs/
|
# documentation: https://www.windmill.dev/docs/
|
||||||
# slogan: Windmill is a developer platform to build production-grade multi-steps automations and internal apps.\
|
# slogan: Windmill is a developer platform to build production-grade multi-steps automations and internal apps.
|
||||||
# info: Login as admin@windmill.dev / changeme to setup the instance & accounts and give yourself super-admin privileges.
|
|
||||||
# tags: windmill,workflow,automation,developer,platform
|
# tags: windmill,workflow,automation,developer,platform
|
||||||
# logo: svgs/windmill.svg
|
# logo: svgs/windmill.svg
|
||||||
# port: 8000
|
# port: 8000
|
||||||
|
|
||||||
version: "3.7"
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
db:
|
db:
|
||||||
image: postgres:16
|
image: postgres:16
|
||||||
shm_size: 1g
|
shm_size: 1g
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
volumes:
|
||||||
- db_data:/var/lib/postgresql/data
|
- db_data:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: $SERVICE_PASSWORD_WINDMILL_POSTGRES
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||||
POSTGRES_DB: windmill
|
- POSTGRES_DB=${POSTGRES_DB:-windmill}
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
interval: 10s
|
interval: 10s
|
||||||
@@ -26,22 +22,27 @@ services:
|
|||||||
windmill_server:
|
windmill_server:
|
||||||
image: ghcr.io/windmill-labs/windmill:main
|
image: ghcr.io/windmill-labs/windmill:main
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_WINDMILL
|
- SERVICE_FQDN_WINDMILL_8000
|
||||||
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_WINDMILL_POSTGRES@db/windmill
|
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
|
||||||
- MODE=server
|
- MODE=${MODE:-server}
|
||||||
- BASE_URL=$SERVICE_FQDN_WINDMILL
|
- BASE_URL=$SERVICE_FQDN_WINDMILL
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
volumes:
|
volumes:
|
||||||
- worker_logs:/tmp/windmill/logs
|
- worker_logs:/tmp/windmill/logs
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
windmill_worker_1:
|
windmill_worker_1:
|
||||||
image: ghcr.io/windmill-labs/windmill:main
|
image: ghcr.io/windmill-labs/windmill:main
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_WINDMILL_POSTGRES@db/windmill
|
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
|
||||||
- MODE=worker
|
- MODE=${MODE:-worker}
|
||||||
- WORKER_GROUP=default
|
- WORKER_GROUP=${WORKER_GROUP:-default}
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -49,13 +50,18 @@ services:
|
|||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- worker_dependency_cache:/tmp/windmill/cache
|
- worker_dependency_cache:/tmp/windmill/cache
|
||||||
- worker_logs:/tmp/windmill/logs
|
- worker_logs:/tmp/windmill/logs
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "exit 0"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
windmill_worker_2:
|
windmill_worker_2:
|
||||||
image: ghcr.io/windmill-labs/windmill:main
|
image: ghcr.io/windmill-labs/windmill:main
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_WINDMILL_POSTGRES@db/windmill
|
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
|
||||||
- MODE=worker
|
- MODE=${MODE:-worker}
|
||||||
- WORKER_GROUP=default
|
- WORKER_GROUP=${WORKER_GROUP:-default}
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -63,13 +69,18 @@ services:
|
|||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- worker_dependency_cache:/tmp/windmill/cache
|
- worker_dependency_cache:/tmp/windmill/cache
|
||||||
- worker_logs:/tmp/windmill/logs
|
- worker_logs:/tmp/windmill/logs
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "exit 0"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
windmill_worker_3:
|
windmill_worker_3:
|
||||||
image: ghcr.io/windmill-labs/windmill:main
|
image: ghcr.io/windmill-labs/windmill:main
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_WINDMILL_POSTGRES@db/windmill
|
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
|
||||||
- MODE=worker
|
- MODE=${MODE:-worker}
|
||||||
- WORKER_GROUP=default
|
- WORKER_GROUP=${WORKER_GROUP:-default}
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -77,22 +88,37 @@ services:
|
|||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- worker_dependency_cache:/tmp/windmill/cache
|
- worker_dependency_cache:/tmp/windmill/cache
|
||||||
- worker_logs:/tmp/windmill/logs
|
- worker_logs:/tmp/windmill/logs
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "exit 0"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
windmill_worker_native:
|
windmill_worker_native:
|
||||||
image: ghcr.io/windmill-labs/windmill:main
|
image: ghcr.io/windmill-labs/windmill:main
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_WINDMILL_POSTGRES@db/windmill
|
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
|
||||||
- MODE=worker
|
- MODE=${MODE:-worker}
|
||||||
- WORKER_GROUP=native
|
- WORKER_GROUP=${WORKER_GROUP:-native}
|
||||||
- NUM_WORKERS=8
|
- NUM_WORKERS=${NUM_WORKERS:-8}
|
||||||
- SLEEP_QUEUE=200
|
- SLEEP_QUEUE=${SLEEP_QUEUE:-200}
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
volumes:
|
volumes:
|
||||||
- worker_logs:/tmp/windmill/logs
|
- worker_logs:/tmp/windmill/logs
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "exit 0"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
lsp:
|
lsp:
|
||||||
image: ghcr.io/windmill-labs/windmill-lsp:latest
|
image: ghcr.io/windmill-labs/windmill-lsp:latest
|
||||||
volumes:
|
volumes:
|
||||||
- lsp_cache:/root/.cache
|
- lsp_cache:/root/.cache
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "exit 0"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|||||||