我使用 Laravel Vapor 来部署基于 Laravel 的微服务。到目前为止,如果应用程序及其依赖项不是太大的话,这非常有效。但如果是这样,那就有点棘手了。Vapor 为这种情况提供了 Docker 运行时,您可以部署最大 10GB 大小的应用程序。
对于本地开发,我们通常使用 Laradock.io,因为它简单灵活。
这意味着如果我们从本地环境部署,很容易进入工作区容器并运行 vapor deploy 命令。在为工作空间容器启用 Docker 客户端后,它可以正常与蒸汽 Docker 运行时一起使用。
但是现在我们将部署过程集成到 Gitlab CI Pipeline 中。这对于我们使用 Vapor PHP 运行时的小型服务非常有效。但对于 Docker 运行时,我对 CI 部署感到绝望。
docker 运行时需要一个已安装的 docker 实例,将在其中调用 vapor。这意味着在 Gitlab-ci.yml 中,我必须添加一个安装了 Docker 和 PHP 的图像来调用 Vapor 脚本。
因此,我在 laradock 工作区容器上创建了一个 docker 映像库,但 Gitlab-runner 总是退出并显示错误消息 no docker deamon is available。
这是我的 GitLab-CI yml 的相关部分(图像仅在本地可用):
testing:
image:
name: lexitaldev/vapor-docker-deploy:latest
pull_policy: never
securityContext:
privileged: true
environment: testing
stage: deploy
only:
- test
script:
- composer install
- php vendor/bin/vapor deploy test
这是具体的输出:
Error Output:
================
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the
docker daemon running?
我尝试使用标准的“laravelphp/vapor:php80”图像并在脚本部分安装 docker。
before_script:
- apk add docker
- addgroup root docker
但没有任何帮助。docker.sock 似乎有问题。
有人设法将 Vapor Docker 运行时部署添加到 CI 脚本吗?
最好的,迈克尔