zoukankan      html  css  js  c++  java
  • 代码判断是否运行在docker环境中

    属于一个比较常见的需求,而且社区已经有了好多实现了,原理很简单

    原理说明

    判断/.dockerenv 是否存在或者是否包含cgroup

    参考代码

    'use strict';
    const fs = require('fs');
    let isDocker;
    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;
        }
    }
    module.exports = () => {
        if (isDocker === undefined) {
            isDocker = hasDockerEnv() || hasDockerCGroup();
        }
        return isDocker;
    };

    说明

    类似的方法可以移植到其他语言,而且也已经有了类似的实现了,比如golang

    func (app *App) isRunningInDockerContainer() bool {
        // docker creates a .dockerenv file at the root
        // of the directory tree inside the container.
        // if this file exists then the viewer is running
        // from inside a container so return true
        if _, err := os.Stat("/.dockerenv"); err == nil {
            return true
        }
        return false
    }

    参考资料

    https://github.com/sindresorhus/is-docker

  • 相关阅读:
    laravel blog 一
    dede:channelartlist currentstyle高亮显示
    dede调用导航/幻灯
    rmp 安装LNMP环境
    无极分类之子孙树、父辈树
    创始人 密码
    mysql报错显示法文解决办法
    渐变色背景
    laravel sendmail
    工作流系统webservice服务
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13984348.html
Copyright © 2011-2022 走看看