go项目部署到服务器上

落樱纷飞 / 2023-08-07 / 原文

  1. 生成linux可执行文件main。

    首先再windows cmd平台下生成linux可执行的文件

    在cmd或者powershell执行以下命令

    set GOARCH=amd64
    go env -w GOARCH=amd64
    set GOOS=linux
    go env -w GOOS=linux
    

    然后到main.go所在的目录下,正常go build即可

    go build main.go
    

    如果想要再切换回windows

    go env -w GOARCH=amd64
    go env -w GOOS=windows
    

    然后又可以愉快的编译exe可执行文件啦

  2. 将项目打包成镜像

    在项目根目录下需要dockerfile文件

    FROM alpine:latest
    #FROM arm64v8/centos:7
    MAINTAINER BigData
    
    # 设置时区为上海
    RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
        && echo "Asia/Shanghai" > /etc/timezone \
        && apk del tzdata
    
    ENV APP_RUN_DIR=/opt/app/
    
    WORKDIR ${APP_RUN_DIR}
    
    ADD ./main ${APP_RUN_DIR}
    ADD ./config.yaml ${APP_RUN_DIR}
    
    # 设置编码
    ENV LANG C.UTF-8
    
    EXPOSE 8888
    
    USER root
    ENTRYPOINT ["/opt/app/main"]
    
    

    将项目放在linux平台下,通过docker命令将项目源代码打包成镜像highwaypush,版本号为v1.0.0

    docker build -t highwaypush:v1.0.0 .
    
  3. 传输

    将镜像highwaypush:v1.0.0打包成tar包highwaypush.tar,方便传输

    docker save -o highwaypush.tar highwaypush:v1.0.0
    

    跨服务器传输文件,将本地的tar传到目标服务器上

    sudo scp highwaypush.tar  ubuntu@172.16.2.83:/home/ubuntu
    

    加载tar包存入本地docker镜像

    sudo docker load -i highwaypush.tar 
    
  4. 创建容器,创建一个以highwaypush:v1.0.0为镜像的容器,容器名为highway_push_service

    sudo docker run -p 11888:8888 --restart=always --log-opt max-size=50m --log-opt max-file=3  --log-driver json-file --name highway_push_service \
    -v /cubd/project/highway_push_service/runtime/resource:/opt/app/resource \
    -v /cubd/project/highway_push_service/runtime/log:/opt/app/log \
    -d highwaypush:v1.0.0
    

    赋予容器内的main脚本权限(先将容器内main拷贝到本地,本地赋权限再上传到容器内。

    sudo docker cp highway_push_service:/opt/app/main /home/ubuntu/miniwaypush/
    sudo chmod 777 /home/ubuntu/miniwaypush/main
    sudo docker cp /home/ubuntu/miniwaypush/main highway_push_service:/opt/app/
    

    启动容器

    sudo docker start highway_push_service
    

    查看容器

    sudo docker ps | grep highway_push_service