V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
PungentSauce
V2EX  ›  程序员

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

  •  2
     
  •   PungentSauce · 26 天前 · 4180 次点击

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

    第 1 条附言  ·  25 天前
    我这边服务器目前是有装 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  
       26 天前
    无脑 docker
    rxmt
        2
    rxmt  
       26 天前
    无脑 docker 或 compose +1
    qczrzl
        3
    qczrzl  
       26 天前
    docker-compose
    qloog
        4
    qloog  
       26 天前
    简单点就是 scp + systermd(一般服务器上都有), scp 用于部署二进制,systermd 用于部署后自动启动服务,下面是基于此原理的一些库

    --------

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


    或者

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

    正确的选择是 systemd 或者容器
    ShineyWang
        21
    ShineyWang  
       26 天前
    不是开源的,商业软件
    Octopus
    Yadomin
        22
    Yadomin  
       26 天前
    k3s 或者 systemd
    IDAEngine
        23
    IDAEngine  
       26 天前
    CapRover
    IDAEngine
        24
    IDAEngine  
       26 天前
    主要是用 CapRover ,和 Heroku 比较类似,还挺好用的,另外就是 minikube
    mohuani
        25
    mohuani  
       26 天前
    @zhengxiaowai 我还在用。。。。
    PungentSauce
        26
    PungentSauce  
    OP
       25 天前
    @Jinnrry 是本地打 docker ,然后推送到 docker hub ,然后在服务器拉取么。
    Jinnrry
        27
    Jinnrry  
       25 天前   ❤️ 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
       25 天前
    @qloog 可以的,这个我看和 deployer 比较像,不过我不希望服务器再装 go 环境了,这个有上传功能,应该也可以做到,这个我研究下。
    beatboxgao
        29
    beatboxgao  
       25 天前
    ansible
    defunct9
        30
    defunct9  
       25 天前
    都是啥乱七八糟的,楼上是正解
    twohan198
        31
    twohan198  
       25 天前
    机器台数=1 , 直接 nohup xxx &
    机器台数小于 5 ,直接 sshpass
    机器台数>5 ,ansible
    manami
        32
    manami  
       25 天前
    我的 Jjava 程序,有人问就说用 docker 部署,实际上是 nohup java -jar
    因为机子资源有限,装个 docker 太耗资源了,没必要
    COW
        33
    COW  
       25 天前 via Android
    写个 shell 也就几个步骤,复杂场景再考虑 ansible
    guanzhangzhang
        34
    guanzhangzhang  
       25 天前
    docker-compose
    daemon 类 go 写的二进制就 systemd
    go 写的工具类 cli 就 screen
    DiamondYuan
        35
    DiamondYuan  
       25 天前
    推荐 CapRover , 基于 docker 开发的。

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