Skip to content

Instantly share code, notes, and snippets.

@denzuko
Created October 23, 2023 03:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save denzuko/357fd45365316060e195c28587d2cebc to your computer and use it in GitHub Desktop.
Save denzuko/357fd45365316060e195c28587d2cebc to your computer and use it in GitHub Desktop.
---
## Execute: docker compose up -D ./docker-compose.yml
version: '3'
services:
autoscale:
image: gianarb/orbiter:latest
healthcheck:
test: ["CMD", "exit 0"]
interval: 25s
timeout: 5s
retries: 3
networks:
default:
aliases:
- autoscale.local
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
deploy:
placement:
constraints: [node.role == manager]
mode: global
restart_policy:
condition: on-failure
max_attempts: 3
delay: 5s
rollback_config:
parallelism: 2
delay: 10s
monitor: 10s
order: start-first
failure_action: continue
update_config:
parallelism: 2
delay: 10s
monitor: 10s
order: start-first
failure_action: rollback
labels:
orbiter: true
ports:
- '8000/tcp'
autoupgrade:
image: mazzolino/shepherd
environment:
TZ: 'UTC'
FILTER_SERVICES: ''
IGNORELIST_SERVICES: ""
RUN_ONCE_AND_EXIT: "true"
healthcheck:
test: ["CMD", "exit 0"]
interval: 25s
timeout: 5s
retries: 3
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
deploy:
replicas: 0
restart_policy:
condition: none
labels:
- swarm.cronjob.enable=true
# Start service every ten minutes to look for new images
- swarm.cronjob.schedule=*/10 * * * * *
- swarm.cronjob.skip-running=true
placement:
constraints:
- node.role == manager
swarm-cronjob:
image: crazymax/swarm-cronjob
healthcheck:
test: ["CMD", "exit 0"]
interval: 25s
timeout: 5s
retries: 3
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
environment:
- "TZ=UTC"
- "LOG_LEVEL=info"
- "LOG_JSON=false"
deploy:
mode: global
placement:
constraints:
- node.role == manager
check_for_json:
healthcheck:
test: ["CMD", "exit 0"]
interval: 25s
timeout: 5s
retries: 3
deploy:
mode: replicated
replicas: 1
labels:
orbiter: false
swarm.cronjob.enable: true
swarm.cronjob.schedule: "0 */1 * * * *" # on every hour *:00:00
swarm.cronjob.skip-running: false
restart_policy:
condition: any
delay: 1h ### << every hour after deploy
volumes:
- /srv/json:/data:ro
image: alpine:latest
command: >
test -e /data/MySpecialFile.json && curl -vX POST autoscale.local:8000/v1/orbiter/handle/autoswarm/my_example_php_script/up
depends_on:
autoscaler: service_healthy
my_example_php_script:
healthcheck:
test: ["CMD", "exit 0"]
interval: 25s
timeout: 5s
retries: 3
image: my_php_script:latest
build:
context: .
args:
SCRIPT_NAME=myPhpScript.php
dockerfile_inline: |
FROM 8.1-cli-alpine3.18
ARG SCRIPT_NAME=index.php
WORKDIR /src
COPY ./$SCRIPT_NAME /src/
WORKDIR /data
RUN apk add mysql-client
ENTRYPOINT /usr/bin/php
CMD /src/$SCRIPT_NAME
depends_on:
autoscale: service_health
environment:
- MYSQL_HOST="example.com"
volumes:
- /srv/json:/data:ro
deploy:
restart_policy: none
replicas: 0
mode: replicated
labels:
orbiter: true
orbiter.up: "1"
orbiter.down: "0"
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment