运行 Laravel 迁移到云 SQL 持续部署的一部分

Running Laravel migrations to Cloud SQL part of continous deployment

我正在开发一个 Laravel 项目,该项目完全连续部署到云 运行 并使用云 SQL 作为存储服务。现在,我需要在本地环境中使用 cloud_sql_proxy 手动执行 php artisan migrate

有谁知道是否可以自动执行此步骤,可能是 Dockerfile 的一部分。

这是我现在的 Dockerfile:

FROM php:7

ENV PORT=8080
ENV HOST=0.0.0.0

RUN apt-get update -y \
  && apt-get install --no-install-recommends -y openssl zip unzip git libonig-dev \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

RUN ["/bin/bash", "-c", "set -o pipefail && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer"]
RUN docker-php-ext-install pdo mbstring
WORKDIR /app
COPY . /app
RUN composer validate && composer install

EXPOSE 8080
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8080"]

感谢您的帮助!

不建议将迁移脚本放入 Dockerfile 中,因为它将为每个未来请求触发。您只需要 运行 它一次,并且该执行应该由构建脚本或开发人员触发。

对于在提交或回滚时引入重大更改的迁移,必须完全停止,当然,回滚也会相应地计划。

还要注意,commit/push 不应立即触发新的迁移。这些通常不是投入生产的常规 CI/CD 管道的一部分。

确保您有一个用于迁移的手动部署,而不是在 CI/CD 下。

部署服务后,您可以创建一个新修订并分配一个标签,允许您在特定 URL 访问修订而无需服务流量

一个常见的用例是 运行 并控制对该容器的首次访问。然后,您可以使用该标记将流量逐渐迁移到标记的修订版,并回滚标记的修订版。

要将现有服务的新修订版部署到生产环境中:

gcloud beta run deploy myservice --image IMAGE_URL  --no-traffic --tag TAG_NAME

该标记允许您直接测试(或 运行 通过此迁移 - 第一个请求)特定 URL 的新修订,而无需提供流量。 URL 以您提供的标签名称开头:例如,如果您在服务 myservice 上使用标签名称 green,您将在 URL https://green---myservice-abcdef.a.run.app 处测试标签修订

我通过 ENTRYPOINT 获得了每次部署的迁移 运行。

详情在回复这里: