zoukankan      html  css  js  c++  java
  • 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 镜像

     

  • 相关阅读:
    【2020-08-15】人生十三信条
    【2020-08-14】何太生气的第三天
    【中间件】MyCat读写分离、分库分表
    sort()方法的用法,参数以及排序原理
    理解Object.defineProperty的作用
    VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹
    VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹
    如何提高编程能力?
    如何提高编程能力?
    Xshell用鼠标选中一段文字后自动换行的问题
  • 原文地址:https://www.cnblogs.com/bushuwei/p/15486873.html
Copyright © 2011-2022 走看看