go项目部署到服务器上

  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
    
    # 设置时区为上海
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    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命令将项目源代码打包成镜像yourimg,版本号为1.0.0

    docker build -t yourimg:1.0.0 .
    
  3. 传输

    将镜像yourimg:1.0.0打包成tar包yourimg.tar,方便传输

    docker save -o yourimg.tar yourimg:1.0.0
    

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

    sudo scp yourimg.tar  target_server@ip:/home/ubuntu
    

    加载tar包存入本地docker镜像

    sudo docker load -i yourimg.tar 
    
  4. 创建容器,创建一个以yourimg:1.0.0为镜像的容器,容器名为yourimg_service

    sudo docker run -p 11888:8888 --restart=always --log-opt max-size=50m --log-opt max-file=3  --log-driver json-file --name yourimg_service \
    -v /cubd/project/yourimg_service/runtime/resource:/opt/app/resource \
    -v /cubd/project/yourimg_service/runtime/log:/opt/app/log \
    -d yourimg:1.0.0
    

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

    sudo docker cp yourimg_service:/opt/app/main /home/ubuntu/yourimgpush/
    sudo chmod 777 /home/ubuntu/yourimgpush/main
    sudo docker cp /home/ubuntu/yourimgpush/main yourimg_service:/opt/app/
    

    启动容器

    sudo docker start yourimg_service
    

    查看容器

    sudo docker ps | grep yourimg_service
    
posted @ 2023-08-07 11:02  落樱纷飞  阅读(383)  评论(0)    收藏  举报