docker部署go项目

什么时候需要用docker部署

当服务器上没有go环境,又不想配置的时候,可以通过拉取go相关的镜像,运行项目

当然你可以通过本地打包,上传至服务器,直接运行二进制文件Go云服务器部署项目

部署

在项目目录下创建 Dockerfile 文件

powershell 复制代码
    FROM centos:7

    ENV MYPATH /workspace/recruit	// 当你刚进入容器时所处的路径,建议跟下面-v 参数对应
    WORKDIR  $MYPATH

    RUN yum -y update \
   	&& yum -y install vim \
           && yum -y install git \
           && yum install -y gcc-c++ \
           && yum -y install wget \
           && wget -P /root/ https://dl.google.com/go/go1.20.linux-amd64.tar.gz \
           && tar -zxvf /root/go1.20.linux-amd64.tar.gz -C /usr/local \
           && echo export PATH=$PATH:/usr/local/go/bin >> /etc/profile \
           && source /etc/profile && go version \
           && echo "source /etc/profile" >> /root/.bashrc \
           && go env -w GOPROXY=https://goproxy.cn,direct \
           && go env -w GO111MODULE=on \

进入 Dockerfile 所处的项目目录执行

powershell 复制代码
docker build -f Dockerfile -t recruit:latest .

-t 为镜像名称以及对应版本,可以根据项目进行修改

如果执行成功,此时通过 docker images 就能查看到刚刚生成的镜像

下面需要让这个镜像跑起来

powershell 复制代码
docker run -it -d -p 8181:8181 -v /root/workspace/recruit/:/workspace/recruit/ --name recruit recruit:latest /bin/bash              

-v 参数挂载目录,刚学docker的同学请注意 ,:前为服务器上你的项目路径,:后为在docker容器中指定的路径(自己指定,建议跟 ENV MYPATH 参数保持一致)

进入容器

powershell 复制代码
docker exec -it 容器id /bin/bash

进入项目挂载的目录

生成可执行文件

powershell 复制代码
go build -o main

后台运行 main 程序

powershell 复制代码
nohup ./main > start.log 2>&1 &

可以为执行文件编写一个脚本,后面直接运行脚本即可

powershell 复制代码
vim update.sh
git pull https://github.com/muyixiaoxi/recruit.git develop		# 修改为自己的仓库地址
go build -o main
kill -9 "$(pgrep -f main)"		# 杀死上次执行的进程
chmod +x main
nohup ./main -c config.yaml > start.log 2>&1 &	
echo "ok"				

运行脚本命令

powershell 复制代码
sh update.sh

后面更新项目时,进入容器,执行 sh update.sh
也可以把进入容器的命令也添加在脚本中,这样不需要再进入容器 ,亲测无效

相关推荐
0wioiw07 小时前
Go基础(④指针)
开发语言·后端·golang
m_136878 小时前
Mac Intel 芯片部署 YOLO(Docker 方式,支持离线打包与 Compose 管理)
yolo·macos·docker
潘晓可9 小时前
Nextcloud 实战:打造属于你的私有云与在线协作平台
docker
衍余未了9 小时前
centos9 docker启动不起来,docker启动发生堵塞问题!
运维·docker·容器
我真的是大笨蛋10 小时前
K8S-基础架构
笔记·云原生·容器·kubernetes
tianyuanwo11 小时前
Docker Registry 实现原理、适用场景、常用操作及搭建详解
运维·docker·容器·registry
木二_11 小时前
附050.Kubernetes Karmada Helm部署联邦及使用
容器·kubernetes·karmada·kubernetes联邦·集群联邦
wdxylb13 小时前
Kubernetes实战系列(4)
云原生·容器·kubernetes
专注代码七年14 小时前
Docker 本地开发环境搭建(MySQL5.7 + Redis7 + Nginx + 达梦8)- Windows11 版 2.0
nginx·docker·容器
我真的是大笨蛋14 小时前
K8S-Pod(上)
java·云原生·容器·kubernetes