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
也可以把进入容器的命令也添加在脚本中,这样不需要再进入容器 ,亲测无效

相关推荐
凯子坚持 c21 分钟前
通往Docker之路:从单机到容器编排的架构演进全景
docker·容器·架构
Fuly102425 分钟前
使用docker本地部署dify
运维·docker·容器
遇见火星4 小时前
Ubuntu Docker 容器化部署教程
linux·ubuntu·docker
幼稚园的山代王7 小时前
go语言了解
开发语言·后端·golang
zhuyasen7 小时前
踩坑实录:Go 1.25.x 编译的 exe 在 Windows 提示“此应用无法运行”
windows·golang
Panda__Panda7 小时前
docker项目打包演示项目(数字排序服务)
运维·javascript·python·docker·容器·c#
xx.ii7 小时前
Docker监控
运维·docker·容器
维尔切8 小时前
Docker 存储与数据共享
运维·docker·容器
温柔一只鬼.8 小时前
Docker快速入门——第四章Docker镜像
运维·docker·容器
程序猿费益洲8 小时前
Docker 网络详解:(三)四大网络模式
网络·docker·容器