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

相关推荐
£漫步 云端彡19 分钟前
Golang学习历程【第十一篇 接口(interface)】
开发语言·学习·golang
计算机小手9 小时前
一个带Web UI管理的轻量级高性能OpenAI模型代理网关,支持Docker快速部署
经验分享·docker·语言模型·开源软件
坚持学习前端日记10 小时前
常见docker指令
docker·容器·eureka
小芳矶10 小时前
Dify本地docker部署踩坑记录
python·docker·容器
70asunflower11 小时前
阿里云无影云电脑 Docker 使用完全指南
阿里云·docker·云计算
chillxiaohan12 小时前
GO学习记录——多文件调用
开发语言·学习·golang
久绊A12 小时前
春节前云平台运维深度巡检-实操经验
运维·安全·容器·kubernetes·云平台
feasibility.13 小时前
在OpenCode使用skills搭建基于LLM的dify工作流
人工智能·低代码·docker·ollama·skills·opencode·智能体/工作流
!chen13 小时前
银河麒麟v11 kubeadm部署k8s v1.35.0高可用集群
云原生·容器·kubernetes
DB!!!14 小时前
自学Kubernestes(k8s)Day1 -- 核心基础概念
云原生·容器·kubernetes