成熟、免费、易部署的图片上传管理系统
优雅的开源相册管理系统,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