成熟、免费、易部署的图片上传管理系统
优雅的开源相册管理系统,PHP + MySQL,界面简洁,上传方便,支持分类、标签、权限设置。
官网:https://lycheeorg.github.io
GitHub:https://github.com/LycheeOrg/Lychee
Docker:https://hub.docker.com/r/lycheeorg/lychee
优点:
免费开源,无限制
上传流畅,界面简洁
多用户支持
分类、地图、EXIF 支持
docker-compose.yml 配置示例
lychee-db:
image: mysql:8.0
container_name: lychee-db
environment:
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_DATABASE=lychee
- MYSQL_USER=lychee
- MYSQL_PASSWORD=lychee_pass
volumes:
- ./lychee-db:/var/lib/mysql
networks:
- ds-net
restart: always
lychee:
image: lycheeorg/lychee
container_name: lychee
depends_on:
- lychee-db
- nginx-ds
environment:
DB_CONNECTION: mysql
DB_HOST: lychee-db
DB_PORT: 3306
DB_DATABASE: lychee
DB_USERNAME: lychee
DB_PASSWORD: lychee_pass
volumes:
- ./lychee-uploads:/conf
networks:
- ds-net
restart: always
问题1:需要先修改环境变量,不然无法使用https 访问
如果网站采用 SSL,请务必修改以下两个参数
vi /root/docker-compose-app/lychee-uploads/.env APP_URL=https://iv.free-ai.top APP_FORCE_HTTPS=true
问题2:程序权限问题,需要加权限
# 停掉旧容器
docker compose down
# 修复权限
sudo chown -R 1000:1000 ./lychee-uploads
# 重新启动
docker compose up -d
问题3:lychee启动比较慢,如果使用nginx代理,需要设置等待,不然nginx 报错,起不来
步骤一:下载 wait-for-it.sh
你可以将它下载到你的项目目录,例如放到 ./scripts/wait-for-it.sh:
mkdir -p scripts curl -o scripts/wait-for-it.sh https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh chmod +x scripts/wait-for-it.sh
步骤二:在 nginx-ds 容器中使用
nginx-ds:
image: nginx:latest
container_name: nginx-ds
ports:
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/certs:/etc/nginx/certs
- ./scripts/wait-for-it.sh:/wait-for-it.sh # 挂载脚本
depends_on:
- lychee
command: ["/bin/sh", "-c", "/wait-for-it.sh lychee:80 --timeout=60 --strict -- nginx -g 'daemon off;'"]
networks:
- ds-net
参数说明
/wait-for-it.sh lychee:80 –timeout=60 –strict — nginx -g ‘daemon off;’
lychee:80:等待 lychee 容器的 80 端口(即 HTTP 服务)响应
–timeout=60:最多等待 60 秒
–strict:如果超时还没响应,就退出(不启动 nginx)
— 后面跟你原本的 nginx 启动命令
遇到错误先看日志
docker logs nginx-ds --tail 50 docker logs lychee --tail 50
遇到数据库无法连接状况处理
# 删除数据库重新部署 docker-compose down rm -rf ./lychee-db docker-compose up -d lychee-db rm -rf ./lychee-uploads docker compose up -d --force-recreate docker ps | grep lychee-db docker exec -it lychee-db mysql -uroot -p # 创建用户(如果用户已经存在,会报错,可以忽略或者先删除用户) CREATE USER IF NOT EXISTS 'admin'@'%' IDENTIFIED BY 'password'; # 授权 GRANT ALL PRIVILEGES ON lychee.* TO 'admin'@'%'; # 刷新权限 FLUSH PRIVILEGES; # 如果 admin 用户已存在且密码需要修改,可以用 ALTER USER 'admin'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; #重启 lychee docker compose restart lychee
附带常用命令:
# 查看运行容器 docker ps # 查看所有容器(包括已停止) docker ps -a # 拉取镜像 docker pull ubuntu # 运行交互式容器 docker run -it ubuntu bash # 停止容器 docker stop 容器ID # 删除容器 docker rm 容器ID # 删除镜像 docker rmi 镜像ID #停止并移除容器 docker compose down -v #清理未被任何容器使用的 Docker 卷 docker volume prune -f
