GitLab CI/CD 部署 Docker 到 AWS EC2

7
我们正在开发Spring Boot应用程序,目前手动部署在AWS上。为此,我们首先通过Dockerfile构建Docker镜像,然后从笔记本连接到AWS EC2实例,然后拉取镜像,最后使用docker run启动它。但是,我们想使用Gitlab CI/CD自动化这个过程。
我们创建了.gitlab-ci.yml文件,build阶段构建Spring Boot应用程序并生成jar文件。Package阶段使用源代码中的Dockerfile构建Docker镜像,然后将镜像推送到注册表。
现在我不知道如何完成deploy阶段。大多数教程只解释如何部署到Google云提供商。我使用以下步骤来部署Docker镜像...
ssh -i "spring-boot.pem" ubuntu@ec2-IP_address.compute-2.amazonaws.com

sudo docker pull username/spring-boot:v1

sudo docker run -d -p 80:8080 username/spring-boot:v1

有谁能帮我将上述步骤添加到部署阶段中?我需要将pem文件添加到源代码中以连接到EC2实例吗?或者,从GitLab CI/CD轻松部署Docker到EC2是否存在更简便的方法。


您可以使用 mssh 连接到基于 IAM 用户的实例,而无需管理 SSH 密钥。但正如 Adiii 所提到的,ECS 和 Fargate 可以让您部署容器而无需管理虚拟机。如果您的设置比较复杂,您可能还想了解 Kubernetes。 - Owen Johnson
1个回答

3

首先,如果存在ssh,则默认情况下必须提供密钥或密码,除非您允许所有人访问。

我需要将pem文件添加到源中才能连接到ec2实例吗?

是的,您应该为ssh提供密钥。

还是有任何简单的方法可以通过gitlab ci/cd在ec2上部署Docker?

是的,有最简单的方法来做到这一点,但是为此,您需要使用ECS,专门设计用于Docker容器,并且您可以通过API管理部署,而不是通过ssh连接到ec2服务器。

ECS专为运行Docker容器而设计,ECS相对于ec2的一些优势是您无需担心容器管理、可伸缩性和可用性,ECS会处理此事。它还提供ECR,类似于Docker注册表,但它是私有的并且在网络内。

enter image description here

deploy-docker-containers


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接