amazon-web-services - Dockerfile - 在 AWS 上安装 jenkins
问题描述
AWS 的新手,因此我们将不胜感激。
我正在尝试通过 AWS 上的 Docker 运行 Jenkins。我发现这篇文章https://docs.aws.amazon.com/aws-technical-content/latest/jenkins-on-aws/containerized-deployment.html
谁能分享一个更好的分步教程来实现这一目标?上面的页面似乎不完整。
它谈到“Dockerfile 还应该包含安装 Jenkins Amazon ECS 插件的步骤”,但没有显示如何使用 Dockerfile 安装插件。
谢谢
解决方案
请按照以下步骤操作:
- 根据您的需要启动 EC2 集群。
- 在本地机器上安装 docker。例如,对于 ubuntu (
sudo apt-get isntall docker.io
) systemctl start docker
- 为我们的 jenkins docker 创建新文件夹。使用以下内容在其中创建新的 Dockerfile。
FROM Jenkins COPY plugins.txt /usr/share/jenkins/plugins.txt RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
- 在同一文件夹中创建 plugins.txt 并添加以下行
amazon-ecs:1.3
- 使用 aws cli 登录到 ECR。首先使用您的凭据配置 aws。
aws ecr get-login --region <REGION>
将上述命令返回的输出运行到 docker login。 sudo docker build -t jenkins_master .
sudo docker tag jenkins_master:latest <AWS ACC ID>.dkr.ecr.<REGION>.amazonaws.com/jenkins_master:latest
- 在 ECR 中为此映像创建存储库
aws ecr create-repository --repository-name jenkins_master
- 在 AWS ECR 中推送图像。
sudo docker push <AWS ACC ID>.dkr.ecr.<REGION>+.amazonaws.com/jenkins_master:latest
- 我们的 Jenkins docker 镜像已经准备好了。但是这个 Jenkins 服务器存储的数据不会是持久的。为了永久存储数据,我们将创建另一个 docker 映像,该映像将创建一个带有挂载点的卷。为此,为这个新的 docker 镜像创建新目录,并在其中创建另一个具有以下内容的 Dockerfile。
FROM Jenkins VOLUME ["/var/jenkins_home"]
- 再次按照相同的命令将这个新存储库推送到 ECR。
sudo docker build -t jenkins_dv .
sudo docker tag jenkins_dv:latest <AWS ACC ID>.dkr.ecr.<REGION>.amazonaws.com/jenkins_dv:latest
aws ecr create-repository --repository-name jenkins_dv
sudo docker push <AWS Account Number>.dkr.ecr.<REGION>.amazonaws.com/jenkins_dv:latest
- 现在我们的图像已经准备好了。我们将使用这些镜像在我们的 ECS 集群上将它们作为服务运行。为此,我们需要使用以下命令为 linux 安装 ecs-cli。
sudo curl -o /usr/local/bin/ecs-cli https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-linux-amd64-latest
- 使用以下内容创建一个新的 txt 文件,该文件将具有 jenkins 配置。
image: jenkins_master
cpu_shares: 100
mem_limit: 2000M
ports:
- "8080:8080"
- "50000:50000"
volumes_from:
- jenkins_dv
jenkins_dv:
image: jenkins_dv
cpu_shares: 100
mem_limit: 500M
15. 最后使用上述文件将此服务推送到您新创建的集群。
ecs-cli compose --file docker_compose.txt service up --cluster <cluster_name>
希望这可以帮助!
推荐阅读
- excel - 我可以使用 VLOOKUP 查找某个日期并提取该日期所需的所有数据吗?
- java - 在分组时计算值中的元素按键中的属性
- scala - Spark 中针对存储在 Hive 表中的图的长线性查询
- ios - 导航项标题视图在 iPhone 8 上出现两次
- javascript - Web Audio API 无法在 iOS 13.3 版上播放。适用于旧版本的 iOS
- rx-java - 如何在 RxJava 中获得布尔组合运算符的“短路”行为
- karate - 空手道:包含功能
- c# - JSON 值无法转换为 System.DateTime
- postgresql - 合并到“合并”时出错的语句
- vue.js - npm run server 抛出错误 sh: 1: vue-cli-service: not found