golang项目部署到linux

lannisiter · · 5746 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

本文记录golang项目的部署流程,需要有一定的go和docker的基础知识。

Dockerfile方式

步骤

  1. 新建目录结构如下
  • deploy

    • Dockerfile

      • app
      • main
    • script

      • build.sh
  1. 首先打包已经写好的go程序

    # 设置编译时的环境
    set GOARCH=amd64 #amd64处理器的程序
    set GOOS=linux       #linux下的可执行文件
    go build main.go #go打包命令
    
  2. 把打包好的main文件放在app目录下,接下来编写运行脚本build.sh放入script目录下

    #!/usr/bin/env bash
    cd /go/src/app/ && chmod -R 777 main && nohup ./main >test.log 2>&1    #执行main文件
    
  3. 编写Dockerfile文件

    FROM golang          #设置基础镜像
    WORKDIR /go/src      #设置工作目录
    COPY . .         #复制当前目录下的文件到工作目录
    EXPOSE 8000          #暴露端口(设置为自己程序运行时占用的端口)
    CMD ["/bin/bash","/go/src/script/build.sh"]      #执行运行脚本
    
  4. 全部都完成后,把deploy目录打包上传至服务器,然后cd进入该目录打包镜像

    docker build -t test-goweb .
    
  5. 等待执行结束后查看镜像

    [root@izbp109k5j3dul0ejalpf5z deploy]# docker images
    REPOSITORY          TAG                 IMAGE ID         CREATED             SIZE
    test-goweb          latest              e7e271e3e4be     13 seconds ago      843MB
    mysql               latest              30f937e841c8     11 days ago         541MB
    golang              latest              7e5e8028e8ec     2 weeks ago         810MB
    tomcat              latest              d03312117bb0     2 weeks ago         647MB
    

    可以看见已经有test-goweb这个镜像了

  6. 然后就是启动容器了

    [root@izbp109k5j3dul0ejalpf5z deploy]# docker run -d -p 8000:8000 --name goweb test-goweb
    c4124d4947a21704f0f47654beaaf12efdfedd83d0df57052318f20b3a576151
    
  7. 启动成功后直接访问就OK了。

不使用Dockerfile

  1. 一样先在goland中打包项目到main文件中

  2. 编写脚本build.sh,最好在linux下编写,win下编写上传之后需要转换格式

    #如果之前部署过这个项目,会出现端口占用,需要杀死之前的进程
    go_id=`ps -ef|grep "./app" |grep -v "grep" | awk '{print $2}'` 
    if [ -z "$go_id" ];
    then
     echo "[go pid not found]"
    else
     kill -9 $go_id
     echo "killed $go_id"
    fi
    
    echo "clean old file"
    rm -rf app
    rm -rf app.log
    if [ -f main ]; then
     echo "strat new process"
     mv main app
     chmod -R 777 edu-app
     nohup ./app >app.log 2>&1 &
    else
     echo "app file not found,qiut"
    fi
    
  1. 上传至服务器,执行命令就部署成功了。

    [root@lanni edu-app]# ls
    build.sh main
    [root@lanni edu-app]# sh build.sh
    [root@lanni edu-app]# ls
    build.sh  app  app.log
    

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:lannisiter

查看原文:golang项目部署到linux

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5746 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传