暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

golang打包成docker镜像

菜鸟又木 2021-10-30
658

一 项目根目录下编写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

  

四 补充

  • 进入运行中的容器:
    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


 


文章转载自菜鸟又木,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论