运行 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 获得了每次部署的迁移 运行。
详情在回复这里:
我正在开发一个 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 获得了每次部署的迁移 运行。
详情在回复这里: