Docker Compose 部署 lychee 相册程序相关问题处理

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