• 请不要在回答技术问题时复制粘贴 AI 生成的内容
PungentSauce
V2EX  ›  程序员

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

  •  2
     
  •   PungentSauce · Nov 29, 2024 · 6825 views
    This topic created in 710 days ago, the information mentioned may be changed or developed.

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

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

    --------

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


    或者

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

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

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

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

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

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