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

相关推荐
znsoft2 小时前
MaClaw(码卡龙)技术拆解:一个 Go + React 的可自进化智能体平台
开发语言·react.js·golang
Blockbuater_drug4 小时前
Dify 1.18 本地部署实战:Windows + WSL2 + Docker,从零跑到本地可用
windows·docker·容器·dify·大模型应用平台
shangjian0074 小时前
K8S学习-基础组件
学习·容器·kubernetes
徐小黑ACG5 小时前
docker 基础教程
运维·docker·容器
wzg20166 小时前
ubuntu 离线安装 docker-compose
linux·ubuntu·docker
时间售卖铺6 小时前
Docker镜像构建全解析:从原理到实战优化
运维·docker·云原生·容器
wzq11_6667 小时前
Kubernetes集群——工作负载
云原生·容器·kubernetes
念何架构之路9 小时前
Go 标准库 database/sql 详解
数据库·sql·golang
jianjinwssy9 小时前
从零设计一个 Agent 安全沙箱:Docker 隔离、三级风控与 Kafka 审计
人工智能·docker·kafka
modelmd9 小时前
Go 切片、映射常见使用场景
开发语言·后端·golang