使用docker搭建个人博客遇到的问题

halo官网

个人博客

halo是一个编写于java语言的博客框架,但是如果你不是对这个框架二次开发,直接使用docker部署是最好的,博客由docker搭建。如果想要使用其他方法搭建,可以直接去halo官网学习。在这里不多说教程,因为官网上很详细,只发布几个我在搭建halo的时候遇到的坑

1、数据库理解出错遇坑

在起初的时候,我认为用docker搭建halo的时候,需要用到宿主机的mysql,所以一开始使用时,我配置~/.halo/application.yaml文件的时候,使用了mysql,我在宿主机上的mysql建了库,然后创建docker容器时采用了使用宿主机桥接模式。这样在docker内能直接访问到宿主机的数据库,后来发现这样使用会出现很多的bug,后来将容器remove然后重新创建一个新的容器后发现,其实docker里内置了h2数据库,所以直接创建容器就可以了,跟着官网弄没错的。

2、文件映射遇坑

一开始我用的启动容器的语句是

docker run --rm -it -d --name halo-dev -p 8090:8090  -v ~/halo:/root/halo ruibaby/halo

后来发现,每次停止容器之后再运行,我的博客的设置内容就会消失不见,后来发现,不是将halo文件映设,而是将.halo这个隐藏文件映射,正确启动如下

docker run --rm -it -d --name halo-dev -p 8090:8090  -v ~/.halo:/root/.halo ruibaby/halo

所以这也说明了,跟着官网弄没错的。。

3、迁移博客遇坑

因为最初是在简书编写文章,所以后来迁移的时候,是将文章一篇一篇复制过来的,但是因为简书采用了防盗链的图片连接,所以当我复制过来的时候,在本地能看到这些图片,分享给别人的时候,别人就看不见这些图片,所以后来我是一个一个图片重新添加附件再重新编写了文章(我可没这么傻,就写了几篇而已,其他全部丢博客链接去了)

4、Nginx反向代理,域名访问

就算你不使用docker部署,由于他开发出来也是由jar包后台运行,而作者也声明未使用war包进行测试,所以,你不能设置成80端口,这样时后台的jar的占用端口对你原本部署的tomcat产生端口冲突,就算你使用了官网上声明的nginx反向代理也会对tomcat访问域名冲突。 就是说,如果你想使用域名直接访问而不追加端口(默认的域名访问使用的是80端口),你需要拥有两个已备案的域名(国内阿里云为例)解析来反向代理两个端口,才能做到使用两个不同的域名来不使用端口号直接访问tomcat和halo。

Nginx配置目录搞错目录应在/etc/nginx/下的nginx.conf 参考地址

Nginx反向代理证书替换https访问 参考地址

# docker  无聊 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×