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

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

  •  2
     
  •   PungentSauce · 1 天前 · 2604 次点击

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

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

    --------

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


    或者

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

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

    优点是开源免费,架构简单。 可以免去配证书的麻烦事。
    出了图形界面,还有 cli ,可以自己和 GitHub action 组合,搞 CICD 。
    Ggmusic
        36
    Ggmusic  
       16 小时 27 分钟前 via iPhone
    图形化界面 必须是 semaphore 。AMX 太重。
    Licsber
        37
    Licsber  
       3 小时 48 分钟前
    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  
       3 小时 44 分钟前
    OP 不想用 Docker 感觉大可不必 额外占用的资源完全可以忽略不计
    我的方案回滚靠`git reset && git checkout xxx` 至于持续部署 可以靠 CI/CD 工具
    但是其实不太常用吧 发版一周能发一次属于合理范围
    只有在 staging 的应用才会每个 commit 每个 push 都重新启动部署
    所以我还没折腾全自动化的部署 目前整套流程也就半分钟 三个命令而已
    alalei
        39
    alalei  
       3 小时 25 分钟前
    用 spug 写发布脚本。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2689 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:24 · PVG 13:24 · LAX 21:24 · JFK 00:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.