上一篇文章讲到了使用 Docker 运行 Halo,但是仅仅只是运行起来了 Halo,并没有讲到如何使用 Nginx进行反向代理以绑定域名,也没有讲到如何配置 HTTPS,所以这篇文章将向大家演示一下如何使用 Docker Compose 部署Halo,并自动配置 Nginx 以及 SSL证书。整个过程最慢不超过10分钟。

安装 Docker 和 Docker Compose

这里使用的服务器系统版本为 CentOS 7.3,其他 Linux发行版安装 Docker 和 Docker Compose 的方式大同小异,大家自行查阅资料。

安装必要依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存

sudo yum makecache fast

安装 Docker

sudo yum -y install docker-ce

启动 Docker

sudo systemctl start docker

设置 Docker 为开机启动

sudo systemctl enable docker

安装 Docker Compose

sudo yum -y install docker-compose

添加国内镜像源

添加或修改 /etc/docker/daemon.json 这个文件,加入下面的配置。

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

重启 Docker 使配置生效

service docker restart

下载 Docker Compose 文件

好了,经过上面一顿操作之后,服务器的 Docker 和 Docker Compose 就已经可以正常使用了。下面我们就可以正式开始部署 Halo 了。首先我们需要下载好 docker-compose.yaml 文件,这个文件在项目目录里面有,我们可以直接使用 wget 命令从 github 上下载下来,如下操作:

yum install -y wget && wget -O docker-compose.yaml https://git.io/fpS8N

修改 Docker Compose 文件

假设你现在已经下载好了 docker-compose.yaml 文件,那么在部署之前需要做的就是简单修改以下这个文件。因为我们需要绑定域名以申请SSL证书,所以你需要在 docker-compose.yaml 文件中修改以下配置:

  halo:
    restart: always
    image: ruibaby/halo
    container_name: halo
    ports:
      - 8090:8090
    environment:
      - VIRTUAL_PORT=8090 #监听的端口
      - VIRTUAL_HOST=localhost  #监听的地址
      - LETSENCRYPT_HOST=localhost #证书的域名
      - LETSENCRYPT_EMAIL=i@example.com #证书所有者的邮箱,快过期时会提醒
    volumes:
      - ~/halo:/root/halo

如上配置,我们需要修改 VIRTUAL_HOST , LETSENCRYPT_HOST 为自己的域名,注意注意注意!,在部署之前最好先将外网IP解析到域名,因为申请 SSL 证书需要域名可以正常访问。另外,LETSENCRYPT_EMAIL 这个节点是证书申请者的邮箱,当证书要过期的时候,会提醒你续签。修改完成之后保存文件备用。

下载配置文件模板

因为要涉及到 Nginx 反向代理,所以我们需要使用模板生成一个 Nginx 的配置文件,以配置好需要代理的地址以及后面 SSL 证书的配置。这个模板人家已经写好了,所以我们直接下载下来即可,下载下来我们就不需要管了。

curl https://raw.githubusercontent.com/jwilder/nginx-proxy/master/nginx.tmpl > /etc/nginx/nginx.tmpl

运行

如果你顺利进行了上面所述步骤,那么已经离成功不远了,现在我们只需要执行一条命令即可完成 Halo 的部署。

docker-compose up -d

注意事项

  1. 最好提前解析好IP,绑定域名。
  2. 运行完成之后可能得等几分钟,HTTPS才会配置好,如果不能访问属正常现象,等待几分钟就可以看到 Halo 安装的界面了。

参考文章/使用的开源镜像