持续整合/发展的建议

时间:2018-02-22 14:06:42

标签: laravel docker jenkins continuous-integration filesystems

我有一个基于Docker的PHP项目。 PHP框架是Laravel。

该项目在Gitlab中设置,我使用Jenkins进行CI / CD。

当我合并到主分支时,在Jenkins中触发了新的构建。我克隆了回购,运行单元测试等等。

完成后,我使用最新的代码库构建一个新的Docker镜像,并将此镜像推送到Docker注册表。

我的jenkinsfile然后调用生产服务器上的脚本,该脚本会下载最新的docker镜像并停止/启动正在运行的容器。

我设置了Nginx代理/负载均衡器,因此用户在启动和停止容器时看不到任何停机时间。

此工作流程运行良好,但我有一个问题:

执行新部署时,Laravel中的存储文件夹会被删除,因此用户上传的所有文件都将丢失。

我如何克服这个问题?

我最近开始研发一个新版本的项目,将所有文件上传到Digital Ocean Spaces,但我发现这个版本非常慢。

我假设S3会是一样的。

欢迎所有建议。

1 个答案:

答案 0 :(得分:1)

我的解决方案是在我运行docker容器时将容器中的卷映射到主机。

我还必须设置权限,但现在我在部署期间有持久性。

无需S3或Spaces。