大家好! 预期将开始“ Framework Laravel”和“ PHP后端开发人员 ”课程,我们将继续分享有关该主题的有趣材料。 走吧
在过去的几年中,Laravel的受欢迎程度
急剧上升 。 Laravel社区甚至认为,与以前的痛苦相比,Laravel使使用PHP的工作过程更加有趣。 Laravel 6具有一些
很酷的新
功能 。 为您的应用程序获取超可扩展的工作URL需要花费数小时甚至数天。 创建像Kubernetes这样的东西是一项艰巨的任务。 在这种情况下,Google Cloud Run处于最佳状态,因为有了它,您可以在数分钟内获得任何容器应用程序的有效HTTPs URL。
Google Cloud Run是无服务器的,完全由Google管理。 您将获得超扩展,每秒支付,HTTP URL和您自己的域映射。
如果要运行无状态容器,则运行云是最简单的方法。 在本文中,我将详细说明如何使您的Laravel 6应用程序在具有持续集成(CI)的Google云上运行。
必要条件
- 您熟悉PHP / Composer,并且了解Laravel(否则我不会在这里)。
- 您知道如何从控制台使用Git。
- 您的CI / CD代码托管在GitHub上,并且您知道如何使用它。
- 您熟悉Docker,甚至可能熟悉多阶段组装。
- 您有一个有效的Google Cloud帐户(他们为您提供了利息-一年300美元的免费贷款,没有理由不启动它)。
为什么Cloud Run非常适合初学者
出于两个原因,我将在下面进行描述:
- 您将学习最佳实践和软件,例如Docker和CI / CD。
- 单击一个按钮,选择两件事并等待五分钟后,主机将正常工作,您可以获得有效的HTTPs URL。 有多少容易?
部署步骤
以下是在Cloud Run上设置和部署Laravel 6的指南:
1.克隆Laravel或一个新的Laravel项目按照官方
安装指南中的指示,从克隆Laravel或使用作曲家或Laravel CLI开始。
我使用作曲家来获取最新版本的Laravel,如下所示:
composer global require laravel/installer
我运行以下命令以获取最新版本的Laravel:
composer create-project --prefer-dist laravel/laravel laravel6-on-google-cloud-run
2.本地首次测试然后运行
cd laravel6-on-google-cloud-run
,然后
cd laravel6-on-google-cloud-run
php artisan serve
。 要查看一切正常,我在浏览器中访问了地址
http://本地主机:8000 ,它对我有用。 我在本地安装了PHP 7.2。
3.在GitHub上创建一个新的存储库在GitHub上创建一个新的存储库,如下所示:

4.
添加存储库和自述文件现在,在创建存储库之后,将其添加到Laravel的本地副本中并添加README文件。
为此,请在控制台中运行以下命令:
git init code .
在GitHub上的存储库中运行命令后,出现以下内容:
5.添加完整的Laravel,打开请求请求现在,通过运行以下命令,将整个应用程序作为请求请求发送到GitHub存储库:
之后,像
这样 ,在存储库中打开“拉取请求”。 也许您认为如果我一个人在做一个项目,为什么我需要一个请求请求?
好吧,好吧,我认为即使您一个人工作,也应该始终遵循系统的方法。
之后,放慢您的拉取请求。
6.使用GitHub操作测试设置不是有趣的部分。 在发出拉取请求之后,GitHub将知道这是一个Laravel项目。 单击存储库页面上的“
操作”选项卡,您将看到类似如下所示的内容:

单击
Laravel下的
设置此工作流程 ,然后在下一页上单击右上角的
开始提交按钮。 之后,添加如下所示的提交消息,然后单击
提交新文件 。

这就是您如何安装CI的方法。 现在默认情况下,Laravel测试将在每次git push上运行。 有困难吗?
感谢Great Mind GitHub!
不再创建
.myCIname.yml
文件!
7.添加docker并运行docker-compose以在本地运行应用程序现在,让我们添加docker并使docker-compose无需PHP或
artisan serve即可在本地运行应用程序。
本部分教程的灵感来自Nicolas的Laravel在
Google Cloud Run上 。
如果您想进一步了解
Docker和Laravel,请参阅
本文 。
首先,请运行以下命令来更新master分支,因为我们使用GitHub界面添加了新的工作流程文件:
git checkout master git fetch git pull --rebase origin master
将密钥添加到
.env.example
文件,从
.env
文件复制它,如下所示:
APP_NAME=Laravel APP_ENV=local APP_KEY=base64:DJkdj8L5Di3rUkUOwmBFCrr5dsIYU/s7s+W52ClI4AA= APP_DEBUG=true APP_URL=http:
由于这只是一个演示,因此可以执行此操作,但是在实际应用程序中,请务必谨慎使用秘密。 对于可用于生产环境的应用程序,请禁用调试以及与开发相关的其他操作。
将这样的
Dockerfile添加到项目的根目录:
FROM composer:1.9.0 as build WORKDIR /app COPY . /app RUN composer global require hirak/prestissimo && composer install FROM php:7.3-apache-stretch RUN docker-php-ext-install pdo pdo_mysql EXPOSE 8080 COPY --from=build /app /var/www/ COPY docker/000-default.conf /etc/apache2/sites-available/000-default.conf COPY .env.example /var/www/.env RUN chmod 777 -R /var/www/storage/ && \ echo "Listen 8080" >> /etc/apache2/ports.conf && \ chown -R www-data:www-data /var/www/ && \ a2enmod rewrite
将以下文件添加到
docker/000-default.conf
:
<VirtualHost *:8080> ServerAdmin webmaster@localhost DocumentRoot /var/www/public/ <Directory /var/www/> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
之后添加
docker-compose.yml
:
version: '3' services: app: build: context: ./ volumes: - .:/var/www ports: - "8080:8080" environment: - APP_ENV=local
让我们将所有内容简化为主要内容。如果您想了解此处编写的所有内容,则可能会详尽无遗,所以让我告诉您主要内容:
- 我们使用官方的PHP Apache docker镜像运行Laravel,它具有PHP版本7.3。
- 我们使用多阶段构建来获取Composer的依赖关系,然后将其复制到具有PHP 7.3和Apache的主docker映像。
- 由于Google Cloud Run要求Web服务器监听8080端口,因此我们使用
000-default.conf
进行配置。 - 为了使docker-compose易于运行,请仅输入一个docker-compose up命令。
- 到目前为止,您已经了解了这一点,从根目录运行docker-compose,所有内容都应在
http://localhost:8080
,在这种情况下,您将了解Laravel 6在Docker中本地运行。
在下面,您可以看到运行
docker-compose up
之后的输出:

如果您有Laravel使用Docker,请打开一个新的pull-request(例如,
一个 )并将Docker添加到您的项目中。
在打开请求请求之前,我在项目的根目录中运行了以下命令:
git status
您将获得如下内容:
On branch docker Untracked files: (use "git add <file>..." to include in what will be committed) Dockerfile docker-compose.yml docker/ nothing added to commit but untracked files present (use "git add" to track)
并运行以下命令:
git add . git commit -m "Add docker and docker compose" git push origin docker
作为奖励,他们将在推送后运行默认的Laravel测试,如下所示:

只有存储库的所有者有权访问“操作”选项卡,因此其他人无需知道测试构建的结果
8.将部署添加到
Google Cloud按钮 。
现在,让我们以一种简单的方式将此Laravel安装部署到Google Cloud Run。 在此阶段,可以认为您已从docker分支上载了拉取请求。
让我们执行以下命令:
git checkout master git fetch git pull --rebase origin master git checkout -b cloud-run-button
将以下内容添加到您的
readme.md
文件中:
### Run on Google cloud run
[](https://console.cloud.google.com/cloudshell/editor?shellonly=true&cloudshell;_image=gcr.io/cloudrun/button&cloudshell;_git_repo=https://github.com/geshan/laravel6-on-google-cloud-run.git)
仔细替换存储库HTTPs URL的最后一部分,例如,如果存储库位于它将更改
为的
地址 处 ,则提交并
推送 。
您的请求请求应类似于
以下内容 。
9.在Google Cloud Run上部署合并拉取请求后,转到存储库页面,然后单击
在Google Cloud上运行按钮。

之后,如果您已登录Google帐户,并且已通过一个项目设置了Google云,请单击“继续”按钮。 在此之后,您可能需要稍等片刻:
- 选择一个项目-选择一个项目以部署此应用程序
选择一个区域-选择一个区域来部署此应用程序,我通常选择us-central-1
然后等待容器收集和扩展,在我的情况下,该过程如下所示:
如果一切顺利,那么在Google Cloud Shell上您将看到HTTPs URL,您可以单击这些URL来查看Laravel应用程序正在运行,如下所示:

上面发生的事情是这样的:
- 选择一个区域后,该脚本通过存储库中的Dockerfile构建了Docker容器的映像;
- 然后,他将组装好的图像推送到Google Container Registry中;
- 之后,他使用gcloud CLI将已组装的映像部署到Cloud Run,后者返回URL。
10.哇! 您的应用程序正在运行!获取网址后,您将看到您的应用程序在Google Cloud Run上运行,如下所示:

如果要部署其他版本,可以将拉取请求更改为master,然后再次单击按钮进行部署。
有关Google Cloud Run的更多信息
Google Cloud Run的价格非常优惠。 您可以在Google Cloud Run的容器或网络应用程序中运行任何应用程序。
我运行了一个家庭项目,该项目每分钟收到1个请求,而我不必支付任何费用。
在引擎盖下,他使用Knative和Kubernetes。 它也可以在您的Kubernetes集群中运行,但是谁愿意管理K8s集群,只要您可以推送并学习一个可扩展的无服务器完全托管应用程序
TLDR
要在Google Cloud Run上快速启动Laravel 6,请执行以下步骤:


结论
希望对您而言,在Google云上运行Laravel应用程序是一项简单的任务。 您甚至可以使用Github操作运行测试。 希望本文对您有所帮助。
要采用CI / CD方法,您可以阅读
本文 ,该
文章讨论了如何在云中使用构建。 由于相同的容器在本地和生产环境(Google Cloud Run)均可工作,因此您无需学习新框架即可切换到无服务器架构。
容器中的任何Web应用程序都可以在Google Cloud Run上运行,因此我认为这是一项很棒的服务!
就这样了,我们提醒您,1月21日至22日,每个人都可以访问免费的在线强化服务 ,在此框架内,我们将创建一个Telegram机器人来在企业点咖啡并在线付款。 您可以在这里注册第二天的强化课程 。