gpt4 book ai didi

amazon-web-services - 如何使用 GitLab CI 部署到 AWS Beanstalk

转载 作者:行者123 更新时间:2023-12-02 18:13:09 28 4
gpt4 key购买 nike

如何在 AWS Elastic Beanstalk、Docker 和 Gitlab ci 上部署节点应用程序。

我创建了一个简单的节点应用程序。 Docker 化了节点应用程序。

我想要做的是使用 gitlab ci 部署我的应用程序。

这是我到目前为止:

image: docker:git
services:
- docker:dind

stages:
- build
- release
- release-prod

variables:
CI_REGISTRY: registry.gitlab.com
CONTAINER_TEST_IMAGE: registry.gitlab.com/testapp/routing:$CI_BUILD_REF_NAME
CONTAINER_RELEASE_IMAGE: registry.gitlab.com/testapp/routing:latest

before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"

build:
stage: build
script:
- docker build -t $CONTAINER_TEST_IMAGE -f Dockerfile.prod .
- docker push $CONTAINER_TEST_IMAGE

release-image:
stage: release
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
only:
- master

release-prod:
stage: release-prod
script:

when: manual


我被困在发布阶段。我只是不确定如何将应用程序部署到 AWS Beanstalk。

由于我已经创建了 docker 图像并将其存储在 gitlab 注册表中。我想要做的就是指示 AWS Beanstalk 从 gitlab 注册表下载 docker 图像并启动应用程序。

我也有 Dockerrun.aws.json它定义了服务。

最佳答案

您的 Dockerrun.aws.json 文件是 Beanstalk 在部署内容时使用的最终决定权。

我发现对我们有用的选项是制作一个安装了 eb cli 的自定义 docker 镜像,以便我们可以运行 eb deploy...来自 gitlab-ci.yml 文件。

这需要运行者的 AWS 权限才能访问 aws 服务,以便用户或权限发挥作用。但他们会以任何方式进行设置。

GitLab 项目 - CI/CD 设置 aws 用户 key (理想情况下,它设置为使用 IAM 角色,但用户/ key 将起作用 - 我不太熟悉获取临时访问权限,这可能是最好的方法,但我再次我不确定它是如何工作的)

我们使用自定义 EC2 实例作为我们的运行器来运行管道,所以我不确定共享运行器 - 我们担心将 aws 用户凭据传递到共享运行器管道......

构建阶段:
构建 docker 镜像并将其推送到我们的 ECR 存储库或您的用例

部署阶段:
在 GitLab 中存储了一个自定义图像,该图像已预先安装了 eb cli。然后运行 ​​eb deploy env-name
这是我们用于 PHP 项目的 dockerfile。您的情况不需要某些安装......这也可以通过添加用户和包版本来改进。这将创建一个安装了 eb cli 的 docker 镜像。

FROM node:12

RUN apt-get update && apt-get -y --allow-unauthenticated install apt-transport-https ca-certificates curl gnupg2 software-properties-common ruby-full \
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
RUN apt-get update && apt-get -y --allow-unauthenticated install docker-ce \
&& apt-get -y install build-essential zlib1g-dev libssl-dev libncurses-dev libffi-dev libsqlite3-dev libreadline-dev libbz2-dev python-pip python3-pip
RUN git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git \
&& ./aws-elastic-beanstalk-cli-setup/scripts/bundled_installer
RUN python3 --version && apt-get update && apt-get -y install python3-pip \
&& pip3 install awscli boto3 botocore && pip3 install boto3 botocore --upgrade


示例 gitlab-ci.yml 设置
release-prod:
image: registry.gitlab.com/your-acct/project/custom-image
stage: release-prod
script:
- service docker start
- echo 'export PATH="/root/.ebcli-virtual-env/executables:$PATH"' >> ~/.bash_profile && source ~/.bash_profile
- echo 'export PATH=/root/.pyenv/versions/3.7.2/bin:$PATH' >> /root/.bash_profile && source /root/.bash_profile
- eb deploy your-environment
when: manual

您还可以将 echo 命令添加到自定义 gitlab 镜像中,因此您需要运行的只是 eb deploy ...

希望这有所帮助

关于amazon-web-services - 如何使用 GitLab CI 部署到 AWS Beanstalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62159453/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com