利用docker-compose快速部署——以Cloudreve为例

BobAnkh published on
3 min, 485 words

Categories: Linux Docker

本篇文章主要介绍如何使用docker-compose及一系列配套工具,快速部署一个https访问的网站,以Cloudreve为例。

准备工具

首先需要安装docker与docker-compose。可以自行安装,也可以使用此处提供的一个脚本docker.sh用于快速安装两者,请自行下载并谨慎使用,如有问题,概不负责。

搭建Nginx-proxy

负责自动发现网站时更新Nginx设置并使用letsencrypt进行SSL证书申请

使用下面这个项目进行相关搭建:

git clone --recurse-submodules https://github.com/evertramos/nginx-proxy-automation.git proxy 

执行一个自动化配置的脚本:

cd proxy/bin
./fresh-start.sh

如此则完成了3个相关容器的构建运行,此后也可以自行根据docker-compose.yml文件进行修改和运行相关服务

需要使用该服务时,只需要在你自己的docker容器运行或docker-compose编排的时候,附带上以下这些环境变量即可(其中NETWORK与自己的设置有关,可依据情况修改):

VIRTUAL_HOST=your.domain.com
LETSENCRYPT_HOST=your.domain.com
LETSENCRYPT_EMAIL=your.email@your.domain.com
NETWORK=proxy

部署Cloudreve

编写以下的docker-compose.yml文件:

version: '3'

services:
  cloudreve:
    image: xavierniu/cloudreve:latest
    container_name: cloudreve
    restart: unless-stopped
    env_file:
        - ./cloudreve.env
    volumes:
        - ${CLOUDREVE_UPLOADS}:/cloudreve/uploads
        - ${CLOUDREVE_CONF}:/cloudreve/config
        - ${CLOUDREVE_DB}:/cloudreve/db
        - ${CLOUDREVE_AVATAR}:/cloudreve/avatar
        - /byr/byr:/byr
    expose:
        - ${CLOUDREVE_PORT}
    environment:
        VIRTUAL_HOST: ${VIRTUAL_HOST}
        LETSENCRYPT_HOST: ${LETSENCRYPT_HOST}
        LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
        VIRTUAL_PORT: ${CLOUDREVE_PORT}


networks:
    default:
        external:
            name: ${NETWORK:-proxy}

.env文件中放置入相关的包括对应volume挂载地址、网址、邮箱、端口等环境变量设置,并创建cloudreve.env文件用于给Cloudreve容器内部提供所需的环境变量,内容如下:

PUID=0
PGID=0
TZ=Asia/Shanghai

其中,PUID和PGID分为是使用命令echo $USER | id查看得到的uid和gid

完成这些工作之后,直接运行docker-compose up -d即可完成部署,等待几分钟让nginx-proxy发现该容器并申请SSL证书后就可以访问了!