0%

使用docker-compose搭建lychee图床

lychee 图床是什么?

A great looking and easy-to-use photo-management-system.

Lychee-Github 地址

docker 搭建 lychee 图床

本次搭建环境如下:

  • docker
  • docker-compose
  • mysql:5.7
  • caddy
  • linuxserver/lychee

说明:
linuxserver/lychee :是一个开源的组织build好的 lychee 图床的本体
mysql:用于存储数据
caddy:用于反向代理并且自动部署Https证书

开始搭建:
首先,我们需要把caddyfile创建好,因为高版本的docker如果映射文件的时候,没有该文件会报错。

1
2
3
4
5
6
7
8
9
# 创建 /docker 目录用于保存数据,可以自定义
mkdir /docker

# 创建 Caddyfile
https://your-domain {
gzip
tls admin@your-email-address
proxy / http://172.20.0.3 # lychee容器的ip地址
}

使用docker-compose 搭建 lychee

把以下文件保存到合适的文件夹下,比如

1
2
3
cd $HOME/docker/lychee
# 保存配置文件为
docker-compose.yaml

docker-compose 文件及解释 (注意修改数据库密码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
version: "2"

services:
lychee:
image: linuxserver/lychee
container_name: lychee
depends_on:
- db
- caddy
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- /docker/lychee/appdata/config:/config
- /docker/lychee/pictures:/pictures
networks:
# 固定lychee的容器ip
mysql-net:
ipv4_address: 172.16.0.3
caddy-net:
ipv4_address: 172.20.0.3
restart: unless-stopped

db:
image: mysql:5.7
container_name: mysql-lychee
environment:
MYSQL_ROOT_PASSWORD: 一定要修改password
MYSQL_DATABASE: lychee
MYSQL_USER: lychee
MYSQL_PASSWORD: 一定要修改password
networks:
mysql-net:
# 固定数据库ip地址,方便以后迁移
ipv4_address: 172.16.0.2
volumes:
- /docker/mysql_5.7:/var/lib/mysql
restart: unless-stopped

# caddy 反向代理开启https
caddy:
image: abiosoft/caddy:latest
container_name: caddy-https
environment:
# 这里代表自动申请证书
- ACME_AGREE=true
ports:
# 注意: 这个镜像开启了80 443 2015 端口
# 注意:这里映射的是宿主机80 和 443 端口
- "80:80"
- "443:443"
networks:
caddy-net:
ipv4_address: 172.20.0.2

volumes:
# 配置映射 / 证书映射
# 挂载文件之前,该文件必须存在,否则报错误
- /docker/caddy/Caddyfile:/etc/Caddyfile
- /docker/caddy/.caddy/:/root/.caddy
# 这里是web的目录
- /docker/caddy/srv:/srv
restart: unless-stopped


# 创建隔离的网络环境
networks:
# mysql-net
mysql-net:
ipam:
config:
- subnet: 172.16.0.0/24
gateway: 172.16.0.1
# caddy-net
caddy-net:
ipam:
config:
- subnet: 172.20.0.0/24
gateway: 172.20.0.1

起服务

1
docker-compose up -d

说明:
Q:为什么要固定容器ip?
A:我为了迁移的时候方便,因为lychee起来后会写入配置文件的ip地址,迁移的时候ip可能会变

Q:为什么使用两个网段?
A:为了隔离容器的网络,看起来这样更安全,并且其他容器要和caddy和mysql连接的时候只需要加入对应网络即可。


服务起来之后…

根据提示,填入相应的信息,愉快的使用吧!

搭建好的图床展示