• golang打包成docker镜像


    一 项目根目录下编写dockerfile生成镜像并导出

    FROM golang:alpine
    MAINTAINER ansirw "******8@163.com"
    WORKDIR $GOPATH/src/dianbiao_docker
    ADD . ./
    ENV GO111MODULE=on
    ENV GOPROXY="https://goproxy.io"
    RUN go build -o dianbiao_docker .
    EXPOSE 5902
    EXPOSE 9602
    ENTRYPOINT  ["./dianbiao_docker"]

        //执行生成本地镜像

    docker build -t dianbiao_docker .
    

        //执行导出镜像

    docker save -o dianbiao_img.tar dianbiao_docker:latest

    二 使用环境变量替代配置文件

      

    package structs
    
    type Uwbcfg struct {
    	//Wbw     string
    
    	Mysqlusername string
    	Mysqlpd string
    	Mysqlhost  string
    	Mysqlpt   string
    	Mysqldb string
    }
    

      

    package datavar MysqlDb *sql.DB
    var MysqlDbErr error
    
    // 初始化链接
    func init() {
        cfg := new(Uwbcfg)
        err := env.Fill(cfg)
        m_user := config.MYSQL_USER_NAME
        m_pd := config.MYSQL_PASS_WORD
        m_host := config.MYSQL_HOST
        m_pt := config.MYSQL_PORT
        m_db := config.MYSQL_DATABASE
        if err != nil {
            //panic(err)
            llog.Info("panic: env mysql")
        }else{
            m_user = cfg.Mysqlusername
            m_pd = cfg.Mysqlpd
            m_host = cfg.Mysqlhost
            m_pt = cfg.Mysqlpt
            m_db = cfg.Mysqldb
    
            if m_user != "" && m_user != "" &&m_user != "" &&m_user != "" &&m_user != "" {
                llog.Info("load env mysql suc")
            }else{
                llog.Info("no env mysql")
                m_user = config.MYSQL_USER_NAME
                m_pd = config.MYSQL_PASS_WORD
                m_host = config.MYSQL_HOST
                m_pt = config.MYSQL_PORT
                m_db = config.MYSQL_DATABASE
            }
    
        }
    
        dbDSN := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", m_user, m_pd, m_host, m_pt, m_db, config.MYSQL_CHARSET)
    
        // 打开连接失败
        MysqlDb, MysqlDbErr = sql.Open("mysql", dbDSN)
        //defer MysqlDb.Close();
        if MysqlDbErr != nil {
            //panic("数据源配置不正确: " + MysqlDbErr.Error())
            llog.Info("dbDSN: " + dbDSN)
            llog.Info("mysql数据源配置不正确: " +"dbDSN: " + dbDSN+ MysqlDbErr.Error())
        }
    
        // 最大连接数
        MysqlDb.SetMaxOpenConns(config.MYSQL_MaxOpenConns)
        // 闲置连接数
        MysqlDb.SetMaxIdleConns(config.MYSQL_MaxIdleConns)
        // 最大连接周期
        MysqlDb.SetConnMaxLifetime((config.MYSQL_ConnMaxLifetime)*time.Second)
    
        if MysqlDbErr = MysqlDb.Ping(); nil != MysqlDbErr {
            //panic("数据库链接失败: " + MysqlDbErr.Error())
            llog.Info("数据库链接失败: " + MysqlDbErr.Error())
        }
    
    }

    三 服务端启动镜像导入环境变量

    docker run -e DIANBIAOCFG_MYSQLUSERNAME=用户名 -e DIANBIAOCFG_MYSQLPD=密码 -e DIANBIAOCFG_MYSQLHOST=地址 -e DIANBIAOCFG_MYSQLPT=端口 -e DIANBIAOCFG_MYSQLDB=数据库名称  --name dianbiao_docker -p 5902:5902 -p 9602:9602 -d dianbiao_docker
    

      

    四 补充

    • 查看当前目录文件大小: du -h –max-depth=1 *
    • 进入运行中的容器:
      sudo docker exec -it epic_aryabhata /bin/bash
      上面不行则用下面的
      sudo docker exec -it epic_aryabhata /bin/sh
    • 查看docker环境变量: docker exec -it dianbiao_docker env
    • docker里手动设置环境变量

      export CONFIG_WBW=wbw

      source /etc/profile

    • 常用命令  docker stop 容器
      docker rm 容器
      docker rmi 镜像

     

  • 相关阅读:
    同样功能的SQL语句,写成参数和写成常量怎么效率会有那么大的差别
    遭遇钓鱼网站
    SQL Server 2005与Oracle同步注意NUMBER类型转换
    Oracle数据类型(转)
    如何使用枚举的组合值
    社保,交得越多亏得越多(转)
    使用OPENXML函数将XML文档转换为行结果集
    发布一个性能测试工具的破解补丁
    如何将SQLServer2005中的数据同步到Oracle中
    Repository模式
  • 原文地址:https://www.cnblogs.com/bushuwei/p/15486873.html
Copyright © 2020-2023  润新知