You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在docker-compose down/up后保留Laravel Docker应用数据?

问题分析与解决方案

核心问题:路径拼写不匹配

你提到图片实际存储路径是storage/app/public/images,但在docker-compose.yml的卷配置中,你挂载的是imagenes目录:

- './app/storage/app/public/imagenes:/opt/bitnami/laravel/storage/app/public/imagenes'

这意味着上传的图片会被写入容器内未挂载的images目录,而非你预期的挂载目录,所以执行docker-compose down后,容器销毁时这些图片会丢失。

解决方案步骤

1. 修正卷路径匹配

将卷配置中的imagenes改为images,确保和Laravel实际存储路径一致:

volumes:
  - './app:/opt/bitnami/laravel' 
  - './app/entrypoint.sh:/opt/bitnami/scripts/laravel/entrypoint.sh'    
  - './app/storage/app/public/images:/opt/bitnami/laravel/storage/app/public/images' 

2. 优化挂载策略(可选但推荐)

Bitnami官方镜像更推荐使用命名卷而非绑定挂载整个Laravel目录,避免权限冲突和初始化逻辑失效问题。你可以调整存储目录的挂载方式为命名卷:

volumes:
  - './app/entrypoint.sh:/opt/bitnami/scripts/laravel/entrypoint.sh'    
  - laravel_storage:/opt/bitnami/laravel/storage/app/public/images
  # 若需要持久化整个storage目录,可改为:
  # - laravel_storage:/opt/bitnami/laravel/storage

# 在文件末尾的volumes块中添加:
volumes:
  mariadb_data:
  laravel_storage:

这种方式Docker会自动处理目录权限,且数据不会因docker-compose down(无-v参数)而丢失。

3. 修复目录权限(若使用绑定挂载)

如果坚持使用绑定挂载,需确保本地./app/storage/app/public/images目录存在且权限正确(Bitnami容器运行用户为bitnami,UID/GID通常为1001):

mkdir -p ./app/storage/app/public/images
chown -R 1001:1001 ./app/storage

4. 验证存储链接

确保php artisan storage:link命令正确创建了软链接,指向挂载的目录。你可以进入容器验证:

docker exec -it wallamotop ls -l public/storage

输出应指向/opt/bitnami/laravel/storage/app/public。

额外优化建议

  • 你的entrypoint.sh中判断docker volume inspect mariadb_data的逻辑存在问题:docker-compose down默认不会删除命名卷,所以该判断只会在第一次创建卷时执行迁移。如果需要根据数据库是否已初始化来决定是否迁移,建议检查数据库中是否存在迁移表(如migrations),而非检查卷是否存在:
if ! php artisan migrate:status >/dev/null 2>&1; then
    info "Running migrations and seeders..."
    php artisan migrate --no-interaction
    php artisan db:seed --no-interaction
else
    info "Database already migrated. Skipping..."
fi

内容的提问来源于stack exchange,提问作者PEDRO DANIEL FERNANDEZ GUERRER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:52:50