index.js 509 B

1234567891011121314151617181920212223242526272829
  1. import fs from 'node:fs';
  2. let isDockerCached;
  3. function hasDockerEnv() {
  4. try {
  5. fs.statSync('/.dockerenv');
  6. return true;
  7. } catch {
  8. return false;
  9. }
  10. }
  11. function hasDockerCGroup() {
  12. try {
  13. return fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');
  14. } catch {
  15. return false;
  16. }
  17. }
  18. export default function isDocker() {
  19. // TODO: Use `??=` when targeting Node.js 16.
  20. if (isDockerCached === undefined) {
  21. isDockerCached = hasDockerEnv() || hasDockerCGroup();
  22. }
  23. return isDockerCached;
  24. }