【发布时间】:2022-12-04 05:30:22
【问题描述】:
我目前有一个 React 应用程序,我为其设置了 AWS CodePipeline,它执行以下操作。
- 检测 GitHub 存储库中的更改
- 使用 buildspec.yaml 文件构建“构建”文件(使用 CodeBuild)
- 将“构建”文件推送到 S3 存储桶
S3 存储桶配置为向我的域提供静态文件。
这个设置很棒,因为它很便宜,我不需要让 EC2 服务器始终启动并运行来为这些静态文件提供服务,这是完全没有必要的。
然而,最近我将这个应用程序 Docker 化了,当我在不同的机器上处理它时,这对我来说太棒了。
然而,既然它已经被 Dockerized 化了,那么让 docker 容器构建“构建”文件并将它们推送到 S3 存储桶似乎是一个更好的主意,以确保在我的机器上构建的文件与被推送的文件相同到 S3 桶。
理想情况下,当我像现在这样推送到回购时,我希望这一切都自动化。
我看过很多关于如何自动创建 docker 镜像的教程,这些镜像被推送到 AWS ECR,然后使用 ECS (Fargate) 来运行容器。然而对我来说,这与在 EC2 服务器上运行我的应用程序是一样的……为什么我要完成所有这些,然后让一个容器在服务器上持续运行?现在它只是一个ECS服务器......
所以我要问的是,我如何创建一个自动化的 CI/CD 管道来使用 docker 容器构建静态文件,然后将它们推送到 S3,就像我目前拥有的那样?
这是当前的 CodeBuild buildspec.yaml 文件以供参考
version: 0.2 phases: install: runtime-versions: nodejs: 12 commands: # install yarn - npm install yarn # install dependencies - yarn # so that build commands work - yarn add eslint-config-react-app build: commands: # run build script - yarn build artifacts: # include all files required to run application # we include only the static build files files: - '**/*' base-directory: 'build'
【问题讨论】:
标签: amazon-web-services docker continuous-integration devops aws-codepipeline