docker笔记(四、docker部署beego打包后的二进制文件)

2023-05-16

在beego工程里,使用go build可以将该工程打包成一个二进制文件,那么这个二进制文件在docker里面该怎么部署呢?

先写一个简单的图片上传的demo,名字叫docker_test

在工程目录里用命令 bee new docker_test  创建一个beego工程

response.go

package models

type ResponseJson struct {
	Code int         `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data,omitempty"` //tag里面加上omitempy,可以在序列化的时候忽略0值或者空值
}

route.go

package routers

import (
	"docker_test/controllers"
	"github.com/astaxie/beego"
)

func init() {
    beego.Router("/", &controllers.MainController{})
    beego.Router("/image/upload",&controllers.ImageUploadController{})
}

controller.go

package controllers

import (
	"docker_test/dao"
	"docker_test/models"
	"github.com/astaxie/beego"
)

type MainController struct {
	beego.Controller
}

type ImageUploadController struct {
	beego.Controller
}

func (c *MainController) Get() {
	c.Data["Website"] = "beego.me"
	c.Data["Email"] = "astaxie@gmail.com"
	c.TplName = "index.tpl"
}

func (c *ImageUploadController) Post() {
	var code int
	file, fileHeader, _ := c.GetFile("img")
	beego.Info("收到图片上传")
	if file != nil {
		defer file.Close()
		savePath := "static/img/" + fileHeader.Filename		
		beego.Info("保存图片")
	}
	code = 200
	beego.Info("返回json")
	c.Data["json"] = &models.ResponseJson{Code:code,Msg:"success"}
	c.ServeJSON()
}

其他都默认就好,工程目录如图:

打开Terminal界面,在项目的根目录,使用go build 命令将项目编译成一个二进制的可执行文件

ok,准备工作做完,这个简单的工程主要就是上传一张图片,并将图片保存到静态文件目录中

下面开始将docker_test这个文件部署到服务器的docker中

1、将项目的conf文件夹、static文件夹、views文件夹以及docker_test文件拷贝到服务器目录中

    

2、编写DockerFile文件     

sudo vim DockerFile

 然后开始编辑DockerFile

FROM golang:latest

#创建工作目录
RUN mkdir -p /go/src/go_test/static/

#进入工作目录
WORKDIR /go/src/go_test

#将DockerFile文件所在目录下的所有文件复制到指定位置
COPY . /go/src/go_test

#下载beego、bee以及mysql驱动
#RUN go get github.com/astaxie/beego && go get github.com/beego/bee && go get github.com/go-sql-driver/mysql

#端口
EXPOSE 8080

#CMD ["bee","run"]
#修改docker_test文件的权限
RUN chmod 777 ./docker_test
#执行docker_test文件
ENTRYPOINT ["./docker_test"]

3、开始构建镜像(在DockerFile文件所在目录下,注意命令后面有一个小点) 

sudo docker build -f DockerFile -t go_app:1.0 .

这样就表示镜像构建完成了,此时可以用docker images命令查看刚才build的镜像

4、以go_app为模板新建镜像并运行镜像(注:下面是一条完整的命令)

sudo docker run -it --name mga -p 8080:8080 -v /home/lenovo/docker_test/go_test/static/:/go/src/go_test/static/ 
--privileged=true go_app:1.0

注解:--name mga 构建的新镜像命名为mga

           -p 8080:8080 将镜像内的8080端口映射到宿主机的8080端口

           -v /home/lenovo/docker_test/go_test/static/:/go/src/go_test/static/ 将宿主机的 /home/lenovo/docker_test/go_test/static/目录对应到容器内的/go/src/go_test/static/目录,实现数据共享,可以接多个 -v

          --privileged=true Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied,解决办法:在挂载目录后多加一个--privileged=true参数即可

          go_app:1.0 为刚构建的镜像模板

此时就会新建一个名称为mga的镜像,运行该镜像并且进入到该镜像里面,beego里面打印的log都可以看到了,如果是想以后台的方式运行镜像,则在--name mga后面加上-d就行。

不懂的命令可以参考上一篇文章:docker笔记(一、docker基本命令)

5、验证

 在浏览器输入http://10.5.11.122:8080/ (这里是我的服务器的ip,端口是8080),可以看到beego的首页了

另外用postman执行图片上传接口,验证一下图片是否共享出来了

此时在服务器的项目目录的static/img文件夹中可以看到刚才上传的图片啦

至此,大功告成!

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker笔记(四、docker部署beego打包后的二进制文件) 的相关文章

随机推荐

  • ffmpeg 4.2.2 实现mp4转avi(修改官方remuxing例子)

    最近想把ffmpeg官方例子过一遍 xff0c 达到初步了解ffmpeg的目的 xff0c 本文只是给自己一个记录 xff0c 也是在网上没有找到一样的文章 xff0c 发出来供大家指点 直接使用官方demo xff0c 把mp4转换成av
  • 12.bss段的初始化

    12 bss段的初始化 在C代码 xff1a 有初始化全局的数据段 xff0c 局部的栈 xff0c malloc部分的堆 xff0c 未初始化的全局的bss段 从上面的编译的信息知道 xff1a Bss段的起始地址 xff1a 00010
  • pandas学习之df.rename()

    pandas学习之df rename df rename 用于更改行列的标签 xff0c 即行列的索引 可以传入一个字典或者一个函数 在数据预处理中 xff0c 比较常用 官方文档 xff1a DataFrame rename self m
  • java8操作两个集合List

    public static void main String args List lt String gt list1 61 new ArrayList lt String gt list1 add 34 1 34 list1 add 34
  • Atcoder AGC005 题解

    A STring 用类似括号匹配的方法搞一下即可 span class token macro property span class token directive keyword include span span class toke
  • CentOS-7安装桌面环境

    CentOS 7安装桌面环境 CentOS 7安装桌面环境 CentOS 7安装Server with GUI 设置为开机从桌面环境启动 yum y group install 39 Server with GUI 39 systemctl
  • [软件注册]Sublime 3 激活/注册码(key)

    偶然发现了一种sublime激活方式 使用的sublime3 1 1版本 亲试有效 Step1 配置 host文件 推荐使用 switchhost软件 可以快速变更host span class hljs number 127 0 span
  • 测试git能否连接github

    welcome to my blog 使用以下命令进行测试 ssh T git 64 github com 出现报错 ssh dispatch run fatal Connection to 13 250 177 223 port 22 S
  • vtk中实现3D模型(读取文件)

    xff08 xff09 VTK 坐标系统及空间变换 窗口 视图分割 mb5fed73533dfa9的技术博客 51CTO博客 VTK学习 xff08 三 xff09 VTK读取序列图像 灰信网 xff08 软件开发博客聚合 xff09 读取
  • centos中安装Python2.7

    转载于 xff1a 秋水逸冰 CentOS 6 8安装Python2 7 13 查看当前系统中的 Python 版本 python version 返回 Python 2 6 6 为正常 检查 CentOS 版本 cat etc redha
  • 安装tar.gz文件(无configure文件)

    如何安装tar gz文件 xff08 以webstorm为例 xff09 1 获取root权限并输入密码 xff1a su root 2 进入有该文件的目录下 xff08 以我的为例 xff0c 具体看你的文件在哪里 xff09 cd 下载
  • 游戏服务端框架之业务线程模型

    请求消息绑定线程策略的选择 在上一篇文章中 我们看到 消息是直接在网络框架的io线程中处理的 这样做有一个非常严重的缺陷 如果业务处理比较耗时 那么io线程接受消息的速度就会下降 严重影响io的吞吐量 典型的 我们应该另起线程池 专门用于异
  • 在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置

    目录 引言1 确认Windows 10版本2 在Windows上安装WSL23 在Windows上安装CUDA on WSL驱动4 在WSL2中安装CUDA Toolkit3 测试CUDA是否能在WSL2中运作4 安装Gnome图形界面其他
  • Centos 开启路由转发实现全网互通

    只需在RouterSrv网关服务器上开启路由转发功能即可 root 64 RouterSrv vi etc sysctl conf net ipv4 ip forward 61 1 添加此行即可 root 64 localhost sysc
  • 虚拟机中配置外网环境

    文章目录 在虚拟机中配置外网环境 在虚拟机中配置外网环境 主机为 win10 xff0c 虚拟机中为 ubuntu 系统 xff0c 采用clash 1 xff0c 设置 Allow Lan xff0c 允许局域网访问 2 xff0c 虚拟
  • mysql 操作数据库(备份与恢复)

    一 直接把创建数据库的语句放到sql 文件中 xff1a php 写法 xff1a lt php mysql port 61 get mysql port cmd 61 US MYSQL BIN 34 mysql exe port 61 3
  • Go调用Python by go-python3

    确保python版本为3 7 conda create go python span class token assign left variable python span span class token operator 61 spa
  • linux下搭建maven私服

    maven私服我相信很多公司都有 xff0c 私服的好处有以下几点 xff1a 1 节省下载资源开销 jar包 xff08 不一定是jar xff0c 也可以是其他资源 xff09 都存在私服 xff0c 可以不必每次下载都去远程仓库去下载
  • git 安装包 最新 下载 快速 国内 镜像 地址

    下载git时 xff0c 先进官网看 https git scm com download win 然后发现几kb的网速 xff0c 这是要让我下一年么 xff0c 找了找网上有没有其他的镜像 xff0c 发现阿里有一个镜像 xff0c 下
  • docker笔记(四、docker部署beego打包后的二进制文件)

    在beego工程里 xff0c 使用go build可以将该工程打包成一个二进制文件 xff0c 那么这个二进制文件在docker里面该怎么部署呢 xff1f 先写一个简单的图片上传的demo xff0c 名字叫docker test 在工