Skip to content

Commit

Permalink
feat: Add healthcheck for docker deployments
Browse files Browse the repository at this point in the history
fix: Missing healthcheck.js

fix: missing healthcheck.js

fix: HEALTHCHECK command
  • Loading branch information
daniel-hiller committed Feb 6, 2024
1 parent fd5c33d commit 92098e1
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 22 deletions.
4 changes: 4 additions & 0 deletions Dockerfile
Expand Up @@ -38,6 +38,7 @@ WORKDIR /app

COPY --chown=node:node start.sh .
COPY --chown=node:node server .
COPY --chown=node:node healthcheck.js .

RUN mv .env.sample .env

Expand All @@ -52,4 +53,7 @@ VOLUME /app/private/attachments

EXPOSE 1337

HEALTHCHECK --interval=10s --timeout=2s --start-period=15s \
CMD node ./healthcheck.js

CMD ["./start.sh"]
25 changes: 14 additions & 11 deletions docker-compose-dev.yml
Expand Up @@ -3,15 +3,7 @@ version: '3'
services:
planka:
image: ghcr.io/plankanban/planka:master
command: >
bash -c
"for i in `seq 1 30`; do
./start.sh &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 seconds...\";
sleep 5;
done; (exit $$s)"
restart: unless-stopped
restart: on-failure
volumes:
- user-avatars:/app/public/user-avatars
- project-background-images:/app/public/project-background-images
Expand Down Expand Up @@ -44,19 +36,30 @@ services:
# - OIDC_CLIENT_SECRET=
# - OIDC_SCOPES=openid email profile
# - OIDC_ADMIN_ROLES=admin
# - OIDC_EMAIL_ATTRIBUTE=email
# - OIDC_NAME_ATTRIBUTE=name
# - OIDC_USERNAME_ATTRIBUTE=preferred_username
# - OIDC_ROLES_ATTRIBUTE=groups
# - OIDC_IGNORE_USERNAME=true
# - OIDC_IGNORE_ROLES=true
# - OIDC_ENFORCED=true
depends_on:
- postgres
postgres:
condition: service_healthy

postgres:
image: postgres:14-alpine
restart: unless-stopped
restart: on-failure
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=planka
- POSTGRES_HOST_AUTH_METHOD=trust
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
interval: 10s
timeout: 5s
retries: 5

volumes:
user-avatars:
Expand Down
20 changes: 9 additions & 11 deletions docker-compose.yml
Expand Up @@ -3,15 +3,7 @@ version: '3'
services:
planka:
image: ghcr.io/plankanban/planka:latest
command: >
bash -c
"for i in `seq 1 30`; do
./start.sh &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 seconds...\";
sleep 5;
done; (exit $$s)"
restart: unless-stopped
restart: on-failure
volumes:
- user-avatars:/app/public/user-avatars
- project-background-images:/app/public/project-background-images
Expand Down Expand Up @@ -52,16 +44,22 @@ services:
# - OIDC_IGNORE_ROLES=true
# - OIDC_ENFORCED=true
depends_on:
- postgres
postgres:
condition: service_healthy

postgres:
image: postgres:14-alpine
restart: unless-stopped
restart: on-failure
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=planka
- POSTGRES_HOST_AUTH_METHOD=trust
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
interval: 10s
timeout: 5s
retries: 5

volumes:
user-avatars:
Expand Down
23 changes: 23 additions & 0 deletions healthcheck.js
@@ -0,0 +1,23 @@
const http = require('http');
const options = {
host: 'localhost',
port: 1337,
timeout: 2000
};

const healthCheck = http.request(options, (res) => {
console.log(`HEALTHCHECK STATUS: ${res.statusCode}`);
if (res.statusCode == 200) {
process.exit(0);
}
else {
process.exit(1);
}
});

healthCheck.on('error', function (err) {
console.error('ERROR');
process.exit(1);
});

healthCheck.end();

0 comments on commit 92098e1

Please sign in to comment.