mirror of
https://github.com/immich-app/immich.git
synced 2024-12-28 06:31:58 +00:00
feat: add docker healthchecks to server and ml (#9583)
* add healthcheck * format, import, IMMICH_PORT, and eslint change * chore: clean up nodejs healthcheck * fix ruff formating * add healthcheck * format, import, IMMICH_PORT, and eslint change * chore: clean up nodejs healthcheck * fix ruff formating * add healthcheck to dockerfile * poetry run ruff check --fix * removed 2 of 3 console calls --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
This commit is contained in:
parent
f6f82a5662
commit
6a4c2e97c0
5 changed files with 48 additions and 0 deletions
|
@ -95,3 +95,5 @@ COPY start.sh log_conf.json ./
|
|||
COPY app .
|
||||
ENTRYPOINT ["tini", "--"]
|
||||
CMD ["./start.sh"]
|
||||
|
||||
HEALTHCHECK CMD python3 healthcheck.py
|
||||
|
|
14
machine-learning/app/healthcheck.py
Normal file
14
machine-learning/app/healthcheck.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
import os
|
||||
import sys
|
||||
|
||||
import requests
|
||||
|
||||
port = os.getenv("IMMICH_PORT", 3003)
|
||||
|
||||
try:
|
||||
response = requests.get(f"http://localhost:{port}/ping", timeout=2)
|
||||
if response.status_code == 200:
|
||||
sys.exit(0)
|
||||
sys.exit(1)
|
||||
except requests.RequestException:
|
||||
sys.exit(1)
|
|
@ -62,3 +62,5 @@ VOLUME /usr/src/app/upload
|
|||
EXPOSE 3001
|
||||
ENTRYPOINT ["tini", "--", "/bin/bash"]
|
||||
CMD ["start.sh"]
|
||||
|
||||
HEALTHCHECK CMD npm run healthcheck
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
"check": "tsc --noEmit",
|
||||
"check:code": "npm run format && npm run lint && npm run check",
|
||||
"check:all": "npm run check:code && npm run test:cov",
|
||||
"healthcheck": "node ./dist/utils/healthcheck.js",
|
||||
"test": "vitest",
|
||||
"test:watch": "vitest --watch",
|
||||
"test:cov": "vitest --coverage",
|
||||
|
|
29
server/src/utils/healthcheck.ts
Normal file
29
server/src/utils/healthcheck.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env node
|
||||
const port = Number(process.env.IMMICH_PORT) || 3001;
|
||||
const controller = new AbortController();
|
||||
|
||||
const main = async () => {
|
||||
const timeout = setTimeout(() => controller.abort(), 2000);
|
||||
try {
|
||||
const response = await fetch(`http://localhost:${port}/api/server-info/ping`, {
|
||||
signal: controller.signal,
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
const body = await response.json();
|
||||
if (body.res === 'pong') {
|
||||
process.exit();
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
if (error instanceof DOMException === false) {
|
||||
console.error(error);
|
||||
}
|
||||
} finally {
|
||||
clearTimeout(timeout);
|
||||
}
|
||||
|
||||
process.exit(1);
|
||||
};
|
||||
|
||||
void main();
|
Loading…
Reference in a new issue