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

30 天前
 3141592653
我是小白,跟着教程能部署网站的那种程度。

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

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

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

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

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

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

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

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

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

docker 并不是虚拟机方案,所以消耗的话你可以就当没有 docker ,直接在 vps 上运行这些应用的压力跟使用 docker 运行大差不差。
3141592653
30 天前
@javalaw2010 确实是的,我就是多次听说 docker 的好,但是实际上手起来又有点难度,碰壁好几次,都没把它啃下来。
其实我也不想装 nginx ,只是因为 yourls 这个程序的教程大多是用 nginx 的,当然道理是相通的,caddy 应该也能用,但对小白的我来说,更难啊。
所以我想如果用 docker 的话,我是不是就可以放心在一台 VPS 上装多种环境了,至少 caddy 和 nginx 共存了,就能解决我的问题了。我就建几个站,常用的就 LAMP 、LNMP 那些东西,很基础很小白的,但遇到问题又烦死个人。
javalaw2010
30 天前
@3141592653 #17 你所谓的 caddy 和 nginx 的共存问题其实是端口占用冲突吧?那么只要你想你的 caddy 站点和 nginx 站点同时监听在 80/443 端口就一定会冲突,docker 也不能解决这个问题的,如果不需要同时监听 80/443 端口,那么不需要 docker 也可以实现。如果你乐在其中的话可以慢慢磨,可以学习到很多东西,如果只是想尽快使用的话,找个懂一点的朋友帮你弄好吧。
3141592653
30 天前
@javalaw2010 受教了,谢谢。可能真的是你说的“端口占用冲突”的问题。
3141592653
30 天前
@javalaw2010 也就是说,如果我的网站需要同时监听 80/443 ,在一台服务器上,我就只能 caddy/nginx 二选一,对吗?
我做个小网站,虽然是自己用的,但还是想“正常”访问,不想在域名上加端口号。
如果只能二选一,那应该是选 nginx 更好吧,大众一点,资料多一点。话说现在用 caddy 还挺方便的,代码少,简单,证书自动续期。nginx 相比 caddy 就复杂多了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1032900

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX