须知:在搭建本博客之前,我对docker、MongoDB都是只闻其名,却从未接触,更别提日新月异的前端技术了。即便在此情况下,我依然成功搭建了本站,今日在这把本菜鸟的纯小白搭建流程记录下来,以作日后阅读,看看原来自己是如此之菜,过程究竟如何,且听我一一道来。
提示:本文主要讲述个人思路变化过程,不是正确部署流程,不要按照本文搭建!!!请参照官方文档部署!!!
本人作为一名Java后端,已然工作了几个年头,却仍旧是一位菜鸟。建立个人博客的心思,从工作之初直到现在,从未停歇,但也从未成功。前日(2022-8-31)偶然在GitHub黑板报
公众号读到关于van-blog
的文章,昨日抱着姑且一试的心态尝试搭建,竟真的成功了。
回头来看,我的搭建流程如下:
首先,阅读VanBlog的【快速上手-部署】,映入眼帘的第一个需要操作的步骤,就是安装docker。此步对于有过Linux操作经验的我来说,那真是驾熟就轻,文中提供了快速安装的命令:
shsudo curl -sSL https://get.daocloud.io/docker | sh
sudo systemctl enable --now docker
但我没有用,因为我点进了Docker 入门教程,在里边读了一会,就忘了提供了快速安装的命令,自己去百度如何安装去了😂
安装完成后,验证了一下安装成功就下一步了,验证命令:
shell$ docker version
# 或者
$ docker info
安装MongoDB
饶是废了不少功夫,在【快速上手-部署】中,并未说明需要安装MongoDB
,但以我多年的作案(犯错)经验,直觉告诉我应该安装MongoDB
,因为我看到docker-compose.yml
中有mongo相关的配置信息:
ymlversion: "3"
services:
vanblog:
# 默认 dockerhub 源
image: mereith/van-blog:latest
restart: always
environment:
TZ: "Asia/Shanghai"
# 图片资源允许的域名,英文逗号分隔。作者 logo 加载不出来请检查此项。
VAN_BLOG_ALLOW_DOMAINS: "www.mereith.com"
# CDN URL,包含协议,部署到 cdn 的时候用。在开启 cdn 之前请不要设置此项。
# VAN_BLOG_CDN_URL: "https://www.mereith.com"
# mongodb 的地址
VAN_BLOG_DATABASE_URL: "mongodb://vanBlog:vanBlog@mongo:27017/vanBlog?authSource=admin"
# jwt 密钥,随机字符串即可。请注意保密!所有的密码都由此密钥签发!
VAN_BLOG_JWT_SECRET: "AnyString"
# 邮箱地址,用于自动申请 https 证书
EMAIL: "[email protected]"
# 内嵌评论系统的 db 名,默认为 waline
VAN_BLOG_WALINE_DB: "waline"
volumes:
# 图床文件的存放地址,按需修改。
- ${PWD}/data/static:/app/static
# 日志文件
- ${PWD}/log:/var/log
# caddy 配置存储
- ${PWD}/caddy/config:/root/.config/caddy
# caddy 证书存储
- ${PWD}/caddy/data:/root/.local/share/caddy
ports:
- 80:80
- 443:443
mongo:
image: mongo
restart: always
environment:
TZ: "Asia/Shanghai"
# 如果你改了这两个,那上面的数据库连接地址也要同步修改。
# mongoDB 初始化用户名
MONGO_INITDB_ROOT_USERNAME: vanBlog
# mongoDB 初始化密码
MONGO_INITDB_ROOT_PASSWORD: vanBlog
volumes:
# mongoDB 数据存放地址,按需修改。
- ${PWD}/data/mongo:/data/db
所以我百度了如何安装MongoDB
,参照了菜鸟教程的文章【Linux平台安装MongoDB】。
安装完成后,配置了数据、日志相关文件夹,启动了MongoDB
,发现没有mongo
的可执行文件,一度使我怀疑安装有问题,浪费了个把时辰也没解决,最终发现是MongoDB
新版本,没有该程序。。。最后也就不了了之。
- PS:后来想查看
MongDB
数据咨询了官方大佬,才得知默认使用的MongDB
是docker
容器内部的服务,并未使用本人安装的这个MongoDB
。。。- 尴了个大尬,费这么大劲竟然是无用功。。。详见:ISSUE
安装完docker
和MongoDB
后,我认为时机成熟,该实际部署VanBlog
了,但却没了思路,不知从何下手。
目前有以下信息:
docker-compose.yml
有何用?放在哪?但肯定是doker
需要用的某种配置。docker
仅有的了解,我需要有个VanBlog
打包好的docker镜像,然后运行某个docker命令
,部署该镜像。sudo docker-compose up -d
是干啥的?和docker-compose.yml
什么关系?根据以上三点信息,我有了一个猜想,docker-compose.yml
是打包docker镜像的配置文件?使用docker-compose up -d
生成docker镜像,有想法就有实践:
docker-compose.yml
文件但项目根目录docker-compose up -d
命令(用的vscode)PS E:\code\DingDangDog_sapce\van-blog> .\docker-compose up -d .\docker-compose : 无法将“.\docker-compose”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检> 查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + .\docker-compose up -d + ~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (.\docker-compose:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
由此,改变思路,在这这行不了,在Linux上是否能执行呢?
又看了一遍docker-compose.yml
的内容,发现有个配置:
services: vanblog: # 默认 dockerhub 源 image: mereith/van-blog:latest
不由得思考,这是docker镜像
的名称?难道官方发布了镜像到公网的docker镜像仓库
?像Maven中央仓库
一样?再一次有想法就有实践:
docker-compose.yml
上传至服务器docker-compose.yml
的同一个文件夹内,再次满怀自信的执行docker-compose up -d
命令,却又报错,找不到docker-compose
命令?docker-compose
安装方法,还真有,此时已经确定思路是对的。之后就是安装docker-compose
并运行命令docker-compose up -d
。
运行后便会显示下载并部署镜像的日志。
至此,
VanBlog
已经安装完成,恭喜自己!
安装完成后,即可进行博客初始化:官方文档
初始化时可准备如下信息,若第一次初始化没有如下信息,也可以先随意填写,以后在后台管理中重新设置:
菜是真的菜。
有时候一个思路的转变,就能少走一大段弯路。
编程切勿纸上谈兵,一切代码都需要自己去实践和感受,才能真正建立自己的理解。
刚部署
vanblog
的时候,docker原理及其配置我是一点都不懂的,只知道他的基本信息,当时就想到可能会由于一些东西不懂,导致出现一些严重bug,没过两天就出现了
Vanblog
时,所有数据都会丢失。我部署vanblog
时,官方大佬还在频繁开发源码中,并且发布了较多新版本,没过几天我部署的版本已经落后了很多,所以我打算升级我的版本。
庆幸大佬有先见之明,系统数据导入导出的功能还是很实用的,我做好了数据备份,按照官方文档更新我的版本,更新完成后启动,此时问题出现了,我的数据都没了。
此时我心里有两种猜想:
vanblog
就这样?这有两种猜想的原因这里说一下
docker-compose.yml
中的一些关于文件夹的配置;最后实践证明了,官方大佬威武,是我的配置问题。。。
具体解决过程有以下几步:
docker-compose.yml
文件中的配置修改为正确的vanblog
及mongodb
踩中此坑原因:
docker
,不会docker-compose
。key
是docker使用的,value
是本地的。再一次:编程切勿纸上谈兵,一切代码都需要自己去实践和感受,才能真正建立自己的理解。
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!