[英]How to improve the speed of deployment for a python based serverless framework project using Gitlab CI
我正在尝试将我的无服务器项目与具有 CI 设置的现有 Git 存储库集成。 现有的 gitlab-ci.yml 需要 docker 映像。
我是 Gitlab CI 的新手,所以我在不同的 git 存储库中玩耍,只是想让它工作。
我已经能够让它与两种不同的 gitlab-ci.yml 设置一起工作。 但是,速度存在显着差异。
使用 ubuntu 镜像,部署需要 6 分钟:
deploy-stage:
stage: deploy
image: ubuntu:18.04
environment:
name: stage
script:
- apt-get update
- apt-get install -y curl software-properties-common
- curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
- bash nodesource_setup.sh
- apt install -y nodejs
- add-apt-repository ppa:deadsnakes/ppa
- apt install -y python3.8 python3-pip
- cd db_update_campaigns
- npm install
- npm install -g serverless
- sls deploy -v
然后我能够让它与 docker 映像一起工作(这是我需要做的以将其与现有的 git 存储库集成),但是部署需要 24 分钟:
deploy-stage:
stage: deploy
image: docker:stable
environment:
name: stage
script:
- apk add --update python3 py3-pip python3-dev nodejs nodejs-npm build-base postgresql-dev
- cd db_update_campaigns
- npm install
- npm install -g serverless
- sls deploy -v
有谁知道为什么会有这样的速度差异? 另外,在使用 docker 映像时,有什么方法可以提高部署速度?
对此的任何帮助将不胜感激。 在这方面,我是一个完全的初学者,所以你的任何建议都会非常感激。 非常感谢。
您似乎正在安装每个构建所需的依赖项。 ( cd db_update_campaigns
之前的所有命令)。 这些并非特定于当前 package 的部署,因此可以预先准备好,因此只需在部署时运行npm install
和sls deploy
命令。
为此,首先基于 docker:stable 创建自定义 docker 映像。 此图像应添加所有必需的依赖项:
FROM docker:stable
RUN apk add --update python3 py3-pip python3-dev nodejs nodejs-npm build-base postgresql-dev
构建映像并将其推送到注册表(例如 dockerhub)
docker build -t <dockerhubusername>/myBuildImage:latest
docker push <dockerhubusername>/myBuildImage:latest
在您的 gitlab-ci.yaml 中引用您的自定义图像,而不是原版 docker 之一。
deploy-stage:
stage: deploy
image: <dockerhubusername>/myBuildImage:latest
environment:
name: stage
script:
- cd db_update_campaigns
- npm install
- npm install -g serverless
- sls deploy -v
这应该会在部署期间为您节省一些时间,因为映像不需要每次都安装依赖项。
如果您更喜欢使用私有 dockerhub 注册表或 gitlab 注册表,请参阅从 gitlab 文档中定义私有容器注册表中的映像以了解如何设置它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.