3141592653
V2EX  ›  Docker

请教一下在下面这种情况下我用 docker 来部署网站是不是会更方便?

  •  
  •   3141592653 · Apr 16, 2024 · 2852 views
    This topic created in 764 days ago, the information mentioned may be changed or developed.
    我是小白,跟着教程能部署网站的那种程度。

    我有个小 VPS ,安装了 caddy ,部署了一个 tiddlywiki 。因为我是小白,跟着教程安装的 caddy ,所以这个网站不想改 nginx 了,怕出错。

    现在我打算再装个 yourls 短网址。这需要 php 、nginx 、mysql 。

    我是不是要把 php 、nginx 、mysql 、yourls 都装在 docker 里?这是装在一个 docker 里,还是要分 4 个?
    有没有必要改一改,把 caddy 和 tiddlywiki 也装在 docker 里?
    开这么多 docker ,是不是对 VPS 消耗比较大,还不如直接装 VPS 上更好?

    说实话,不想把 tiddlywiki 改用 nginx ,对我来说还是比较折腾的。小白,你懂得。
    25 replies    2024-06-11 15:58:51 +08:00
    shiny
        1
    shiny  
    PRO
       Apr 16, 2024   ❤️ 1
    装在四个 docker 容器里,用 docker-compose 编排。这点消耗很少,除非你想榨干硬件性能,否则没有必要直接装 vps 。
    3141592653
        2
    3141592653  
    OP
       Apr 16, 2024
    @shiny 谢谢。还不会 docker-compose ,需要去学习一下。
    榨干是不可能榨干的,就我这水平和这需求,性能白白浪费的多。
    fishtocat
        3
    fishtocat  
       Apr 16, 2024   ❤️ 1
    如果是小白的话,建议安装在 docker 里面
    优势:
    1. docker 提供了简单的自动重启机制,docker run -d --restart unless-stopped redis , 可以在 vps 重启的情况下自动启动服务,不用去学习较为复杂的 systemd 等机制
    2. docker 提供了环境隔离,小白容易配置出错导致服务异常,如果是 docker 的话,直接删除容器即可,不会担心会有残留的配置文件影响后续的部署

    至于性能,docker 本身并不会占用多少性能,参考 https://ieeexplore.ieee.org/document/7095802
    shiny
        4
    shiny  
    PRO
       Apr 16, 2024   ❤️ 1
    能够全部装 docker 里维护会更方便,比如要迁移机器,只要新机器上装上 docker ,旧机器上 docker 停下,直接拷文件到新机器吗,一个 docker compose up -d 就可以开起来。

    不用 docker 的话,时间久了自己怎么配置的都会不记得,一旦出现问题,回忆安装时候的路径什么的都是个麻烦事。
    确实学习略有成本,但是一旦掌握,投入在运维上的时间能大幅下降。
    3141592653
        5
    3141592653  
    OP
       Apr 16, 2024
    @fishtocat 好的,感谢。我也隐隐感觉安装在 docker 里比较方便,但是因为还不会 docker ,需要花点时间学习,所以一直没有去做。最近想做个短网址网站给自己用,caddy 和 nginx 应该是冲突的,所以又想起来 docker 了。
    Baymaxbowen
        6
    Baymaxbowen  
       Apr 16, 2024
    可以尝试在 WSL 折腾一下,跑通了再把 docker-compose 弄到线上服务器
    3141592653
        7
    3141592653  
    OP
       Apr 16, 2024
    @shiny 谢谢,听人劝,吃饱饭。看来是有必要学学简单的 docker 操作的。各位大佬有没有快速上手的 docker 教程推荐?我一般都是直接搜网上的文章、教程,一步一步跟着做,到最后网站是能跑起来,好不好就不知道了哈哈哈
    3141592653
        8
    3141592653  
    OP
       Apr 16, 2024
    @Baymaxbowen 再来个 WSL ,对我来说就有点操作压力了。
    Baymaxbowen
        9
    Baymaxbowen  
       Apr 16, 2024   ❤️ 1
    @3141592653 #8 window 的 Linux 子系统,你能折腾到现在,搞这个应该很简单,
    shiny
        10
    shiny  
    PRO
       Apr 16, 2024
    我在 2016 年入门 docker 时候最大的体会:一开始理解它的好处很难,总觉得它很麻烦;但是一旦理解之后就再也没回到过去的操作方式了。

    我是通过纸质书学习的,内容几乎都是差不多的,网上文章也够丰富。
    docker compose 则是通过官方文档学习的 https://docs.docker.com/compose/
    它能把 docker 命令参数写入文件里,并让多个容器互通,这样不必每次都写具体的 docker 命令参数。

    另外补充下,国内使用最大的麻烦还是 dockerhub 速度太慢,而大多数国内镜像则不够稳定。当然,如果是境外 vps 就没有这种烦恼。
    3141592653
        11
    3141592653  
    OP
       Apr 16, 2024
    @shiny 好的,再次感谢。回头好好学习一下。
    28Sv0ngQfIE7Yloe
        12
    28Sv0ngQfIE7Yloe  
       Apr 16, 2024
    我用 docker 很久了,积累了很多单 pod 的初始化脚本,但是 docker compose 用的不多,上周末我突发奇想用 gpt-4 帮我改造下,最终结果我很满意,OP 可以试试,大概了解下 compose 是个什么东西,再把需求交给 gpt 输出
    3141592653
        13
    3141592653  
    OP
       Apr 16, 2024
    @Morii 有 gpt 辅助,确实可以省不少精力。
    zh3256
        14
    zh3256  
       Apr 16, 2024   ❤️ 1
    推荐这个, 先搭起来再去了解细节
    https://github.com/1Panel-dev/1Panel
    3141592653
        15
    3141592653  
    OP
       Apr 16, 2024
    @z1829909 这个在站立搜索到了,也打算了解一下,谢谢推荐
    javalaw2010
        16
    javalaw2010  
       Apr 16, 2024   ❤️ 1
    虽然但是。。。如果没有一定的 docker 和 linux 的实战经验,小白直接上手 docker 的话大概率会觉得 docker 挺难用的。而且你的 VPS 上已经装了 caddy 就没必要 Nginx 的容器了,这一来你可用的相关教程又少了一些。。。

    所以我建议先在虚拟机里多实验实验吧,然后把每一步命令都找个文档记下来。

    docker 并不是虚拟机方案,所以消耗的话你可以就当没有 docker ,直接在 vps 上运行这些应用的压力跟使用 docker 运行大差不差。
    3141592653
        17
    3141592653  
    OP
       Apr 16, 2024
    @javalaw2010 确实是的,我就是多次听说 docker 的好,但是实际上手起来又有点难度,碰壁好几次,都没把它啃下来。
    其实我也不想装 nginx ,只是因为 yourls 这个程序的教程大多是用 nginx 的,当然道理是相通的,caddy 应该也能用,但对小白的我来说,更难啊。
    所以我想如果用 docker 的话,我是不是就可以放心在一台 VPS 上装多种环境了,至少 caddy 和 nginx 共存了,就能解决我的问题了。我就建几个站,常用的就 LAMP 、LNMP 那些东西,很基础很小白的,但遇到问题又烦死个人。
    javalaw2010
        18
    javalaw2010  
       Apr 16, 2024   ❤️ 1
    @3141592653 #17 你所谓的 caddy 和 nginx 的共存问题其实是端口占用冲突吧?那么只要你想你的 caddy 站点和 nginx 站点同时监听在 80/443 端口就一定会冲突,docker 也不能解决这个问题的,如果不需要同时监听 80/443 端口,那么不需要 docker 也可以实现。如果你乐在其中的话可以慢慢磨,可以学习到很多东西,如果只是想尽快使用的话,找个懂一点的朋友帮你弄好吧。
    3141592653
        19
    3141592653  
    OP
       Apr 16, 2024
    @javalaw2010 受教了,谢谢。可能真的是你说的“端口占用冲突”的问题。
    3141592653
        20
    3141592653  
    OP
       Apr 16, 2024
    @javalaw2010 也就是说,如果我的网站需要同时监听 80/443 ,在一台服务器上,我就只能 caddy/nginx 二选一,对吗?
    我做个小网站,虽然是自己用的,但还是想“正常”访问,不想在域名上加端口号。
    如果只能二选一,那应该是选 nginx 更好吧,大众一点,资料多一点。话说现在用 caddy 还挺方便的,代码少,简单,证书自动续期。nginx 相比 caddy 就复杂多了。
    IvanLi127
        21
    IvanLi127  
       Apr 16, 2024
    @3141592653 常见的用例下,caddy 配置比 nginx 简单很多,而且需要配的东西也少,省得去找资料改配置。改配置很容易疏忽踩出新坑。
    3141592653
        22
    3141592653  
    OP
       Apr 17, 2024
    @IvanLi127 是的,caddy 确实比 nginx 简单得多,自动申请和续费证书这一点很省事
    javalaw2010
        23
    javalaw2010  
       Apr 17, 2024   ❤️ 1
    @3141592653 #20 对的,只能二选一,但是这俩都支持 virtual host ,换个说法两个只要选择一个就够了。但也有折中的办法,叫做“反向代理”,假设你的 nginx 站点在 8080 端口上,那么你在 caddy 上配置一个 80/443 的站点反向代理到 localhost:8080 也可以实现“正常访问”,不过就是有点脱裤子放屁了。
    3141592653
        24
    3141592653  
    OP
       Apr 17, 2024
    @javalaw2010 了解了,对我很有用,非常感谢。
    naver1
        25
    naver1  
       Jun 11, 2024
    有现成的 docker 镜像: https://hub.docker.com/_/yourls
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5068 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 119ms · UTC 09:20 · PVG 17:20 · LAX 02:20 · JFK 05:20
    ♥ Do have faith in what you're doing.