使用 docker 部署 mdnice
Intro
最近 mdnice 的在线版使用开始需要登录才能访问,一方面我觉得我的文章会被保存的他们的服务器上,使用他们的平台就能轻松拿到很多文章的数据,他们甚至是可以直接拿到 markdown 原始内容去别的平台分享转发,另外一方面也是觉得以后如果加了别的限制就没有办法使用,所以还是打算自己部署一下好了,前两天看到“老法师昭昭”发的一个私有化部署的教程,可以参考前两天转发的文章 绕开登录限制,私有化部署Markdown转公众号格式神器mdnice ,感觉挺好的与我的想法不谋而合,但是我的应用都是 docker 部署的,不想再通过文件的形式拷来拷去的,不方便移植,部署也不方便,于是就打算打包一个 docker 镜像来用
Docker
mdnice 本身并没有提供 docker 的支持,于是我 Fork 了一份增加了 docker 的支持,为了方便别的小伙伴做自定义和参考,给 mdnice 提了一个 PR,可以参考:https://github.com/mdnice/markdown-nice/pull/268
Dockerfile
如下:
FROM node:12-alpine AS builder
WORKDIR /app# install and cache app dependencies
COPY package.json .
RUN yarnCOPY . .
RUN yarn run buildFROM nginx:alpineCOPY --from=builder /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Dockerfile 本身并不复杂,使用 node 编译项目,拿到打包后的静态资源,放在 nginx 目录下,由 nginx 对外提供服务,这里的 Dockerfile 有一些小技巧可以参考,在 build 的时候先拷贝 package.json
进行 npm 包的还原,这样如果 package.json
不发生变化就会使用镜像缓存就不会重新还原 npm 包了
打包 docker 镜像,有了 dockerfile,打包 docker 镜像就是一个很简单的事情了
docker build -t mdnice .
就可以打包一个镜像名字是 mdnice
的 docker 镜像了
使用 docker 部署
有了 docker 镜像就可以比较简单的使用,可以使用下面的命令进行部署
docker run -d --name mdnice -p 9000:80 mdnice
如果不想自己 build docker 镜像,可以使用我 build 好的镜像
docker run -d --name mdnice -p 9000:80 weihanli/mdnice
9000 是我随便定义的一个端口号,你可以根据需要修改成自己想要的端口号
部署效果如下:
More
如果你想进一步修改源代码,就要修改后进行再进行打包了
希望能够帮到你~~
References
https://github.com/mdnice/markdown-nice/pull/268