V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
PungentSauce
V2EX  ›  程序员

大家往自己服务器部署/启动的时候都是通过什么方式,有什么比较好用的开源工具么

  •  2
     
  •   PungentSauce · 3 天前 · 3626 次点击

    最早的时候部署 php 可以用 deployer 。 现在用的 go ,打包什么的可以用.goreleaser 解决。但是上传部署不知道有什么方便的工具么。最好工具可以本地操作,或者部署在服务器,上传后自动执行也可以。不知道有什么开园工具么。

    第 1 条附言  ·  3 天前
    我这边服务器目前是有装 supervisor 和 1panel 。我目前的流程是,本地 go build 之后甩到服务器上,然后面板操作重起 supervisor 指定服务。但是我希望可以简化这个流程。我期望的是 我执行某个命令后,可以编译,完成上传,和重启这几个操作。如果是页面上传的话,那么就是上传完成和重启,这两个完成就可以,本地的话至少要可以做到上传和重启。因为之前用 php 有 deployer ,但是目前没有找到比较合适的其他软件。deployer 本身还可以回滚,软链接,多版本,这个功能我还是挺喜欢的。不知道其他的有没有。 打 docker ,然后服务端拉取这个方案我不是很想使用。因为本身就是一个 go 单体应用,没有什么特殊的依赖,上传上去,最简单的话,nohup xxx serve & 就可以运行,所以用 docker 拉取的话,感觉还是有点重,并且服务器还是比较低配的 2c2g ,一些基础服务装一下还好。go 的单体服务不是很想使用 docker 。这个方向的话,不清楚大家有什么比较好的方案
    50 条回复    2024-12-03 00:10:51 +08:00
    Jinnrry
        1
    Jinnrry  
       3 天前
    无脑 docker
    rxmt
        2
    rxmt  
       3 天前
    无脑 docker 或 compose +1
    qczrzl
        3
    qczrzl  
       3 天前
    docker-compose
    qloog
        4
    qloog  
       3 天前
    简单点就是 scp + systermd(一般服务器上都有), scp 用于部署二进制,systermd 用于部署后自动启动服务,下面是基于此原理的一些库

    --------

    https://github.com/dreamans/syncd 可以了解下 是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率. (用到了 scp )


    或者

    https://github.com/pioz/god 能让你无需繁琐的 SSH 登录和手动配置,即可在远程服务器上部署、控制 Go 编写的守护进程 (依赖 systermd )
    qloog
        5
    qloog  
       3 天前
    @qloog 推荐 god , 更简单些,也支持同时管理多个服务
    usboy
        6
    usboy  
       3 天前   ❤️ 1
    docker-compose
    k3s
    flytsuki
        7
    flytsuki  
       3 天前
    docker-compose, pm2, supervisor
    lpe234
        8
    lpe234  
       3 天前
    git pull && docker compose up -d --build
    esee
        9
    esee  
       3 天前
    自己写脚本加 PM2 守护,简单明了
    GeekGao
        10
    GeekGao  
       3 天前
    让 AI 帮你生成一份 docker compose 配置。
    ElmerZhang
        11
    ElmerZhang  
       3 天前
    代码 -> gitlab -> gitlab-ci -> docker build -> aliyun registry -> k8s/docker-compose
    seers
        12
    seers  
       3 天前 via Android
    cicd 钩子,自动打包自动发布,生活太美好了
    fuis
        13
    fuis  
       3 天前   ❤️ 2
    用 docker-compose 和 portainer 部署。遇到没有 docker-compose.yml 的项目,用 composerize 从 docker run 里生成;遇到忘记 docker run 的情况,用 runlike 从运行中的容器生成命令行。
    zhengxiaowai
        14
    zhengxiaowai  
       3 天前
    我感觉都要暴露年龄了,,,supervisor 。。
    ptaooo
        15
    ptaooo  
       3 天前
    目前用的 1panel ,纯懒
    nonewind
        16
    nonewind  
       3 天前
    supervisor + 1
    oneisall8955
        17
    oneisall8955  
       3 天前
    portainer stack
    chingyat
        18
    chingyat  
       3 天前
    Podman
    ysicing
        19
    ysicing  
       3 天前
    k3s 或者 docker
    julyclyde
        20
    julyclyde  
       3 天前
    首先否决掉 supervisorD 、pm2 之类的,他们自己的存活性没保证
    然后否决掉 nohup——因为 interactive shell 对环境变量的污染会带来隐式外部依赖,nohup.out 无法 rotate 、login session 无法退出等问题

    正确的选择是 systemd 或者容器
    ShineyWang
        21
    ShineyWang  
       3 天前
    不是开源的,商业软件
    Octopus
    Yadomin
        22
    Yadomin  
       3 天前
    k3s 或者 systemd
    IDAEngine
        23
    IDAEngine  
       3 天前
    CapRover
    IDAEngine
        24
    IDAEngine  
       3 天前
    主要是用 CapRover ,和 Heroku 比较类似,还挺好用的,另外就是 minikube
    mohuani
        25
    mohuani  
       3 天前
    @zhengxiaowai 我还在用。。。。
    PungentSauce
        26
    PungentSauce  
    OP
       3 天前
    @Jinnrry 是本地打 docker ,然后推送到 docker hub ,然后在服务器拉取么。
    Jinnrry
        27
    Jinnrry  
       3 天前   ❤️ 1
    @PungentSauce 我的方案是代码 push 自建的 gitea ,然后 gitea action 自动编译 docker image ,编译完成后 scp docker image 到服务器,然后 docker 加载镜像运行。

    最早的时候我是编译完后 push 到 docker hub ,然后服务器上面拉镜像,结果发现国内 push docker hub 很慢,而且很不稳定

    然后我又把 docker hub 改成了阿里云的 docker 镜像中心,用了几年,后面发现免费的阿里镜像中心也不稳定,偶尔会抽风拉不下来,抽风的时候毫无办法,毕竟没付费

    最后就改成了直接 scp 镜像过去
    PungentSauce
        28
    PungentSauce  
    OP
       3 天前
    @qloog 可以的,这个我看和 deployer 比较像,不过我不希望服务器再装 go 环境了,这个有上传功能,应该也可以做到,这个我研究下。
    beatboxgao
        29
    beatboxgao  
       3 天前
    ansible
    defunct9
        30
    defunct9  
       3 天前
    都是啥乱七八糟的,楼上是正解
    twohan198
        31
    twohan198  
       3 天前
    机器台数=1 , 直接 nohup xxx &
    机器台数小于 5 ,直接 sshpass
    机器台数>5 ,ansible
    manami
        32
    manami  
       3 天前
    我的 Jjava 程序,有人问就说用 docker 部署,实际上是 nohup java -jar
    因为机子资源有限,装个 docker 太耗资源了,没必要
    COW
        33
    COW  
       3 天前 via Android
    写个 shell 也就几个步骤,复杂场景再考虑 ansible
    guanzhangzhang
        34
    guanzhangzhang  
       3 天前
    docker-compose
    daemon 类 go 写的二进制就 systemd
    go 写的工具类 cli 就 screen
    DiamondYuan
        35
    DiamondYuan  
       3 天前
    推荐 CapRover , 基于 docker 开发的。

    优点是开源免费,架构简单。 可以免去配证书的麻烦事。
    出了图形界面,还有 cli ,可以自己和 GitHub action 组合,搞 CICD 。
    Ggmusic
        36
    Ggmusic  
       3 天前 via iPhone
    图形化界面 必须是 semaphore 。AMX 太重。
    Licsber
        37
    Licsber  
       2 天前
    https://www.bilibili.com/video/BV1yTBqY7E3M/
    可以看下我最近写的小工具 跳过前面直接看部署部分
    成果(短链接): https://j.licsber.site/baidu
    django + gunicorn(wsgi) + nginx(静态文件)
    用 Dockerfile 打好镜像 然后 volume 挂载数据
    docker-compose 管理启停 然后 K3s 的 traefik 来代理 加 ssl 证书 加压缩等
    支持 HTTPS 证书自动续签(lets + cert-manager)
    超简单部署 只需要`docker-compose up -d && kubectl apply -f proxy.yaml`
    Licsber
        38
    Licsber  
       2 天前
    OP 不想用 Docker 感觉大可不必 额外占用的资源完全可以忽略不计
    我的方案回滚靠`git reset && git checkout xxx` 至于持续部署 可以靠 CI/CD 工具
    但是其实不太常用吧 发版一周能发一次属于合理范围
    只有在 staging 的应用才会每个 commit 每个 push 都重新启动部署
    所以我还没折腾全自动化的部署 目前整套流程也就半分钟 三个命令而已
    alalei
        39
    alalei  
       2 天前
    用 spug 写发布脚本。。。
    yqs112358
        40
    yqs112358  
       2 天前
    2c2g 用 docker 也没啥呀,这东西本身也没太大占用,我 1c512M 5G 硬盘的小鸡都在用 docker 跑服务(也是 go 单体应用),基础镜像直接用 scratch (镜像只有程序本体大小),或者有简单 shell 需求的话用 alpine (多几 MB ),goreleaser 可以自动上传构建结果到 hub ,服务器上一条命令就拉下来安装/更新然后就启动了。
    个人认为用这种标准化的办法来部署服务算是比较好的,应该也算不上重吧,而且用 docker 跑服务在安全性方面也有额外的保障
    bluedawn
        41
    bluedawn  
       2 天前
    docker/k8s 设计之初就是为了解决自动化部署问题
    不用它们用啥
    bluedawn
        42
    bluedawn  
       2 天前
    另外 docker 非常轻量级,重个啥
    xuanbg
        43
    xuanbg  
       1 天前
    我 1C0.5G 照样用 docker ,只不过上面只跑一个 nginx 做反向代理罢了。
    mozhizhu
        44
    mozhizhu  
       1 天前
    all in docker
    frankilla
        45
    frankilla  
       1 天前
    docker-compose 作为小白,我是觉得比 docker 好用。
    mengdodo
        46
    mengdodo  
       17 小时 4 分钟前
    git 配合 runner 实现提交到指定分支自动 build 后 ssh scp 同步,再配合下 pm2 supervisor 实现重启,全部自动化
    EscYezi
        47
    EscYezi  
       11 小时 45 分钟前 via Android
    如果是自己写的本地 build 好直接 ftp+pm2,其他的尽量用 docker compose
    realpg
        48
    realpg  
       8 小时 21 分钟前
    自己写 systemd-services
    LostPrayers
        49
    LostPrayers  
       5 小时 31 分钟前
    开发测试阶段用 screen 方便看输出,上线了换 systemd
    jqtmviyu
        50
    jqtmviyu  
       4 小时 15 分钟前
    pm2 + config.json
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1036 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:26 · PVG 04:26 · LAX 12:26 · JFK 15:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.