This commit is contained in:
2025-11-30 16:56:13 +01:00
parent 527c18c89f
commit 0e0383bf49
5 changed files with 58 additions and 51 deletions

View File

@@ -1,20 +1,23 @@
version: '3.9' volumes:
bookstack_db_data:
driver: local
bookstack_app_data:
driver: local
services: services:
app: app:
env_file: env_file:
- stack.env - stack.env
image: ${DOCKER_REGISTRY:-}lscr.io/linuxserver/bookstack:latest image: ${DOCKER_REGISTRY:-}lscr.io/linuxserver/bookstack:latest
ports: ports:
- 6875:80 - target: 80
published: 6875
protocol: tcp
mode: ingress
volumes: volumes:
- /share/docker_data/bookstack/bookstack_app_data:/config - bookstack_app_data:/config
deploy: deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
labels: labels:
com.centurylinklabs.watchtower.enable: true com.centurylinklabs.watchtower.enable: 'true'
homepage.container: bookstack-app-1 homepage.container: bookstack-app-1
homepage.description: Books homepage.description: Books
homepage.group: Utilities homepage.group: Utilities
@@ -22,9 +25,10 @@ services:
homepage.icon: bookstack.png homepage.icon: bookstack.png
homepage.name: Bookstack homepage.name: Bookstack
homepage.server: my-docker-swarm homepage.server: my-docker-swarm
homepage.weight: 1 homepage.weight: '1'
wud.watch: true wud.watch: 'true'
wud.watch.digest: true wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
@@ -36,15 +40,13 @@ services:
PUID: 0 PUID: 0
image: ${DOCKER_REGISTRY:-}lscr.io/linuxserver/mariadb image: ${DOCKER_REGISTRY:-}lscr.io/linuxserver/mariadb
volumes: volumes:
- /share/docker_data/bookstack/bookstack_db_data:/config - bookstack_db_data:/config
deploy: deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
labels: labels:
wud.watch: true wud.watch: 'true'
wud.watch.digest: true wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
version: '2'

View File

@@ -1,43 +1,48 @@
version: '3.9' networks:
gitea:
external: false
services: services:
server: server:
environment: environment:
USER_UID: '1000' USER_UID: 1000
USER_GID: '1000' USER_GID: 1000
ROOT_URL: https://gitea.sectorq.eu ROOT_URL: https://gitea.sectorq.eu
ENABLE_PASSWORD_SIGNIN_FORM: 'false' ENABLE_PASSWORD_SIGNIN_FORM: false
DISABLE_REGISTRATION: 'true' DISABLE_REGISTRATION: true
image: ${DOCKER_REGISTRY:-}gitea/gitea:latest image: ${DOCKER_REGISTRY:-}gitea/gitea:latest
networks: networks:
- gitea - gitea
ports: ports:
- 3000:3000 - target: 3000
- '222:22' published: 3000
protocol: tcp
mode: ingress
- target: 22
published: 222
protocol: tcp
mode: ingress
volumes: volumes:
- /share/docker_data/gitea:/data - /share/docker_data/gitea:/data
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
deploy: deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
labels: labels:
com.centurylinklabs.watchtower.enable: 'true' com.centurylinklabs.watchtower.enable: 'true'
homepage.container: gitea homepage.container: gitea
homepage.description: version control server homepage.description: Version control server
homepage.group: utilities homepage.group: Utilities
homepage.href: https://${appname}.sectorq.eu homepage.href: https://${APPNAME}.sectorq.eu
homepage.icon: ${appname}.png homepage.icon: ${APPNAME}.png
homepage.name: gitea homepage.name: Gitea
homepage.server: my-docker homepage.server: my-docker-swarm
homepage.weight: '1' homepage.weight: '1'
homepage.widget.key: ${token} homepage.widget.key: ${TOKEN}
homepage.widget.type: ${appname} homepage.widget.type: ${APPNAME}
homepage.widget.url: https://${appname}.sectorq.eu homepage.widget.url: https://${APPNAME}.sectorq.eu
homepage.widget.version: '2' homepage.widget.version: '2'
wud.watch: 'true' wud.watch: 'true'
wud.watch.digest: 'true' wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
@@ -46,7 +51,7 @@ services:
environment: environment:
CONFIG_FILE: /config/config.yaml CONFIG_FILE: /config/config.yaml
GITEA_INSTANCE_URL: https://gitea.sectorq.eu/ GITEA_INSTANCE_URL: https://gitea.sectorq.eu/
GITEA_RUNNER_REGISTRATION_TOKEN: 8nmkqjhkvywltmnff2o9vs0tzo70ufhsqpvg6ymb GITEA_RUNNER_REGISTRATION_TOKEN: 8nmKqJhkvYwltmNfF2o9vs0tzo70ufHSQpVg6ymb
GITEA_RUNNER_NAME: jaydee GITEA_RUNNER_NAME: jaydee
GITEA_RUNNER_LABELS: jaydee GITEA_RUNNER_LABELS: jaydee
volumes: volumes:
@@ -54,16 +59,10 @@ services:
- /share/docker_data/gitea-runner/data:/data - /share/docker_data/gitea-runner/data:/data
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
deploy: deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
labels: labels:
wud.watch: 'true' wud.watch: 'true'
wud.watch.digest: 'true' wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
networks:
gitea:
external: false

View File

@@ -1,7 +1,4 @@
version: '3' version: '3'
volumes:
n8n-data:
driver: local
services: services:
n8n: n8n:
image: ${DOCKER_REGISTRY:-}n8nio/n8n:latest image: ${DOCKER_REGISTRY:-}n8nio/n8n:latest
@@ -27,7 +24,7 @@ services:
stop_grace_period: 60s stop_grace_period: 60s
deploy: deploy:
labels: labels:
homepage.container: n8n_n8n homepage.container: n8n
homepage.description: Workflow management homepage.description: Workflow management
homepage.group: Utils homepage.group: Utils
homepage.href: https://${APPNAME}.sectorq.eu homepage.href: https://${APPNAME}.sectorq.eu
@@ -40,3 +37,6 @@ services:
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
volumes:
n8n-data:
driver: local

View File

@@ -3,6 +3,8 @@ networks:
loki: null loki: null
volumes: volumes:
loki-data: loki-data:
grafana-data:
grafana-certs:
services: services:
grafana: grafana:
container_name: grafana container_name: grafana

View File

@@ -68,12 +68,16 @@ def convert_compose_to_swarm(data):
deploy.setdefault("labels", {}) deploy.setdefault("labels", {})
if isinstance(svc["labels"], dict): if isinstance(svc["labels"], dict):
deploy["labels"].update(ensure_labels_as_string(svc["labels"])) deploy["labels"].update(ensure_labels_as_string(svc["labels"]))
elif isinstance(svc["labels"], list): elif isinstance(svc["labels"], list):
for label in svc["labels"]: for label in svc["labels"]:
key, value = label.split("=", 1) key, value = label.split("=", 1)
deploy["labels"][key] = value.lower() if value.lower() in ["true", "false"] else str(value) deploy["labels"][key] = value.lower() if value.lower() in ["true", "false"] else str(value)
del svc["labels"] del svc["labels"]
labels = deploy.get("labels", {})
if "homepage.server" in labels and labels["homepage.server"] == "my-docker":
labels["homepage.server"] = "my-docker-swarm"
# 4) Default replicas # 4) Default replicas
deploy.setdefault("replicas", 1) deploy.setdefault("replicas", 1)