Add a way to set a timeout for abra deploy
#437
Labels
No Label
abra
abra-gandi
awaiting-feedback
backups
bug
build
ci/cd
community organising
contributing
coopcloud.tech
democracy
design
documentation
duplicate
enhancement
finance
funding
good first issue
help wanted
installer
kadabra
performance
proposal
question
recipes.coopcloud.tech
security
test
wontfix
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: coop-cloud/organising#437
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Per default
abra deploy
waits until every container returns a healthy state.But after a fixed timeout of 50s it will abort.
Many applications need much more time to come up, therefore it would be good to specify a timeout for each app.
I think the compose file could be a good place to specify the timeout, so it will be bound to the application and it won't clutter the .env even more.
Excellent idea @moritz!
I've tried to experiment with those timeout values quite a bit and they vary heavily according to app but also according to the machine you're deploying to. It's hard to get a correct balance but I agree that the naive 50 seconds could really be improved.
Keycloak, for example, often needs much more time no matter the machine.
Are you thinking about a global traefik flag on the recipes or another type of label like https://docs.docker.com/compose/compose-file/compose-file-v3/#labels-1? I don't think there is an existing
timeout
key we can use in the Compose spec? I only see one inhealthcheck
.I thought about a label like
coop-cloud.${STACK_NAME}.timeout=120
this could easily be read by abra to set a custom timeout.@moritz oh nice, should we maybe do
coop-cloud.${STACK_NAME}.timeout=${TIMEOUT}
and haveTIMEOUT=...
option in the.env
file? If this isn't detected, then we default to 50 seconds? Then it's configurable which I think could be important for a long-term solution because the timeout depends on the capacity of the hardware to get the app up and that will always be different. So, e.g. a raspberry pi deploying a keycloak (could be like 2 mins) vs. a powerful desktop machine (could be 1 min).