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

相关推荐
用户13573999256601 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h1 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔1 天前
通过 Docker 创建开发环境
docker·开发环境
冬奇Lab2 天前
一天一个开源项目(第41篇):Workout.cool - 现代化开源健身教练平台,训练计划与进度追踪
docker·开源·资讯
天朝八阿哥2 天前
使用Docker+vscode搭建离线的go开发调试环境
后端·docker·visual studio code
阿虎儿3 天前
Docker安装(非sudo用户可用)
docker
fetasty4 天前
rustfs加picgo图床搭建
docker
蝎子莱莱爱打怪5 天前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
小p6 天前
docker学习7:docker 容器的通信方式
docker
小p6 天前
docker学习5:提升Dockerfile水平的5个技巧
docker