You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
509 B
29 lines
509 B
import fs from 'node:fs'; |
|
|
|
let isDockerCached; |
|
|
|
function hasDockerEnv() { |
|
try { |
|
fs.statSync('/.dockerenv'); |
|
return true; |
|
} catch { |
|
return false; |
|
} |
|
} |
|
|
|
function hasDockerCGroup() { |
|
try { |
|
return fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker'); |
|
} catch { |
|
return false; |
|
} |
|
} |
|
|
|
export default function isDocker() { |
|
// TODO: Use `??=` when targeting Node.js 16. |
|
if (isDockerCached === undefined) { |
|
isDockerCached = hasDockerEnv() || hasDockerCGroup(); |
|
} |
|
|
|
return isDockerCached; |
|
}
|
|
|