我有一个基于Docker的PHP项目。 PHP框架是Laravel。
该项目在Gitlab中设置,我使用Jenkins进行CI / CD。
当我合并到主分支时,在Jenkins中触发了新的构建。我克隆了回购,运行单元测试等等。
完成后,我使用最新的代码库构建一个新的Docker镜像,并将此镜像推送到Docker注册表。
我的jenkinsfile
然后调用生产服务器上的脚本,该脚本会下载最新的docker镜像并停止/启动正在运行的容器。
我设置了Nginx代理/负载均衡器,因此用户在启动和停止容器时看不到任何停机时间。
此工作流程运行良好,但我有一个问题:
执行新部署时,Laravel中的存储文件夹会被删除,因此用户上传的所有文件都将丢失。
我如何克服这个问题?
我最近开始研发一个新版本的项目,将所有文件上传到Digital Ocean Spaces,但我发现这个版本非常慢。
我假设S3会是一样的。
欢迎所有建议。
答案 0 :(得分:1)
我的解决方案是在我运行docker容器时将容器中的卷映射到主机。
我还必须设置权限,但现在我在部署期间有持久性。
无需S3或Spaces。