在文章 用Hexo搭建个人博客(https://blog.xiayyu.me/2017/06/15/hexo-blog/) 中有关于hexo的详细介绍.本文主要介绍如何利用docker方便快捷的搭建静态网页服务器,用来部署我的hexo博客.
直接上docker-compose.yml
version: '3'
services:
# 静态网页服务器容器
blog:
container_name: blog
image: nginx:stable-alpine
restart: unless-stopped
volumes:
- blog-sftp:/usr/share/nginx/html:ro
environment:
# 以下三个环境变量为jrcs/letsencrypt-nginx-proxy-companion所需
VIRTUAL_HOST: ${WEB_DOMAIN_NAME}, www.${WEB_DOMAIN_NAME}, blog.${WEB_DOMAIN_NAME}
LETSENCRYPT_HOST: ${WEB_DOMAIN_NAME}, www.${WEB_DOMAIN_NAME}, blog.${WEB_DOMAIN_NAME}
LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
# sftp服务器容器用来上传静态网页内容
sftp:
container_name: blog-sftp
image: atmoz/sftp:alpine
restart: unless-stopped
volumes:
- blog-sftp:/home/blog/upload
ports:
- "2222:22"
# cmd: 用户:密码:uid:gid:目录,必须写到目录,否则出现文件权限问题.
command: blog:${SFTP_PW}:1001:100:upload
# 将网页服务器添加到同一docker网络中
networks:
default:
external:
name: nginx-proxy
# 设置sftp容器和blog容器的共享volume
volumes:
blog-sftp:
hexo默认支持的部署方式中sftp实现起来方便,特别是对于windows友好.为安全起见我没有直接使用vps的sftp服务,而是通过docker添加了一个sftp服务,并且通过docker volume实现容器间的文件共享.启动上述docker容器之后,只需要在hexo的配置文件_config.yml中填好相应的部署信息就ok了
deploy:
type: sftp
host: [hostname]
user: blog
pass: [passwd]
port: 2222
remotePath: /upload