公告

微信

欢迎大家私信交流

Skip to content

项目部署

打包二进制文件

shell
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o relaxing main.go

上传至服务器

shell
scp -r /Users/fang/project/go_relaxing/relaxing/relaxing root@x.xxx.xx.xx:/project/relaxing

服务器编写 docker-compose.yaml / config.yaml /DockerFile /

docker-compose.yaml

shell
# 创建配置文件
cd project/relaxing
mkdir -p ~/config
vim ~/config/config.yaml
yaml
version: '3'
services:
  relaxing:
    image: relaxing:1
    container_name: relaxing
    restart: always
    ports:
      - "9999:9999"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./config:/app/config

config.yaml

yaml
server:
  address: ":9999"
  dumpRouterMap: true
  routeOverWrite: true
  accessLogEnabled: false
  openapiPath: "/api.json"
  swaggerPath: "/swagger"

database:
  logger:
    path: "temp/logs/sql"
    level: "all"
    stdout: true
    ctxKeys: [ "RequestId" ]

  default:
    link: "mysql:root:123456@tcp(x.xxx.xx.xx:3306)/relaxing?parseTime=true&loc=Asia%2FShanghai"
    debug: true
    createdAt: "create_time"
    updatedAt: "update_time"
    deletedAt: "deleted_time"
    timeMaintainDisabled: false

redis:
  default:
    address: x.xxx.xx.xx:6379
    db: 1
    pass: 123456
    idleTimeout: 600

Dockerfile

Dockerfile
# 使用包含必要运行时的基础镜像
FROM alpine:3.8

# 安装基本依赖
RUN apk add --no-cache \
    ca-certificates \
    tzdata \
    libc6-compat

###############################################################################
#                                INSTALLATION
###############################################################################

ENV WORKDIR                 /app
ADD relaxing                $WORKDIR/relaxing
RUN chmod +x $WORKDIR/relaxing

###############################################################################
#                                   START
###############################################################################
WORKDIR $WORKDIR
# 明确使用二进制方式执行
ENTRYPOINT ["./relaxing"]

docker打包成镜像

shell
# 重新构建镜像
docker build -t relaxing:1 .

# 停止并删除旧容器
docker rm -f relaxing

# 在该目录下启动容器
docker-compose up -d

# 在该目录下停止容器
docker-compose down

启动异常检查

shell
# 查看容器状态
docker ps

# 查看容器日志
docker logs relaxing

构建脚本

sh
#!/bin/bash

# 设置环境变量
REMOTE_SERVER="x.x.x.x"
REMOTE_USER="root"
REMOTE_DIR="/project/relaxing"

# 显示当前目录
echo "当前工作目录: $(pwd)"

# 检查Go环境
if ! command -v go &> /dev/null; then
    echo "错误: Go未安装或不在PATH中"
    exit 1
fi

echo "Go版本: $(go version)"

# 设置Go环境变量
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

# 构建Go二进制文件
echo "开始构建Go应用..."
go mod tidy
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o relaxing main.go

if [ $? -ne 0 ]; then
    echo "构建失败"
    exit 1
fi

echo "构建成功: $(pwd)/relaxing"
# 询问是否上传到服务器

# 上传到服务器
echo "上传文件到服务器 ${REMOTE_SERVER}..."
scp -r relaxing ${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_DIR}

if [ $? -ne 0 ]; then
    echo "上传失败"
    exit 1
fi

# 远程执行部署命令
echo "在服务器上执行部署命令..."
ssh ${REMOTE_USER}@${REMOTE_SERVER} "cd ${REMOTE_DIR} && \
    docker build -t relaxing:1 . && \
    docker rm -f relaxing && \
    docker-compose up -d"

if [ $? -ne 0 ]; then
    echo "部署失败"
    exit 1
fi

echo "部署成功!"

上次更新于: