From b4eb2d1c20d45ebcb7d3eba5aae8f1897f37cfc6 Mon Sep 17 00:00:00 2001 From: lzhang Date: Tue, 25 Oct 2022 20:04:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B=20-=20?= =?UTF-8?q?=E9=BE=99=E8=9C=A5=E5=AE=B9=E5=99=A8=E9=95=9C=E5=83=8F/?= =?UTF-8?q?=E9=AB=98=E6=80=A7=E8=83=BDNginx=E9=BE=99=E8=9C=A5=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E5=AE=9E=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.DS_Store" | Bin 0 -> 6148 bytes .../index.yaml" | 16 +++ .../index.yaml" | 15 +++ .../start.md" | 1 + .../step2.md" | 13 +++ .../step3.md" | 11 ++ .../step4.md" | 68 +++++++++++++ .../finish.md" | 1 + .../index.yaml" | 20 ++++ .../start.md" | 4 + .../step2.md" | 9 ++ .../step3.md" | 95 ++++++++++++++++++ .../step4.md" | 9 ++ .../step5.md" | 81 +++++++++++++++ .../step6.md" | 6 ++ .../index.yaml" | 15 +++ .../start.md" | 3 + .../step2.md" | 11 ++ .../step3.md" | 7 ++ .../step4.md" | 9 ++ 20 files changed, 394 insertions(+) create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/.DS_Store" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/index.yaml" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /index.yaml" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /start.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step2.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step3.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step4.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/finish.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/index.yaml" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/start.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step2.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step3.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step4.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step5.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step6.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/index.yaml" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/start.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step2.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step3.md" create mode 100644 "anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step4.md" diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/.DS_Store" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/.DS_Store" new file mode 100644 index 0000000000000000000000000000000000000000..d315ec58807655713947246aa216df5b3f0ee404 GIT binary patch literal 6148 zcmeH~F-rqc4962&uy7*9$?+|MYgY%k9(59`aNwdGQVTk?bSNDZ#2bVT4o(hEehxo{ zIQTuBo%|;+m6NNhgC>yozvdb zh7YzovrQ}84kZbIxre#zuM_kLH{vjY-+?>E~5cmZDuQh)F literal 0 HcmV?d00001 diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/index.yaml" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/index.yaml" new file mode 100644 index 0000000..d692375 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/index.yaml" @@ -0,0 +1,16 @@ +name: 龙蜥容器镜像/高性能Nginx龙蜥镜像实验 +desc: 龙蜥系统中集成了丰富的经过优化的软件包,基于它构建容器镜像将会让你的构建过程事半功倍,ABS就是用于构建与发布容器镜像的平台,本课程将会带你探索如何一步一步构建属于你自己的容器镜像,并通过实例证明龙蜥系统中的优化,欢迎来体验。 +type: course +total_time: 30min +level: beginner +chapters: + - name: 龙蜥社区容器镜像发布流程 + desc: 熟悉龙蜥社区容器镜像发布流程,体验社区CI/CD服务 + content: + live_time: 10min - name: 镜像下载与测试 + desc: 下载前述自定义镜像以及Nginx官方镜像,运行并通过ab来测试查看性能。 + content: + live_time: 10min - name: 使用 ABS 构建平台构建容器镜像 + desc: 使用 ABS 构建平台构建容器镜像,体验 ABS 构建服务 + content: + live_time: 10min \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /index.yaml" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /index.yaml" new file mode 100644 index 0000000..460926b --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /index.yaml" @@ -0,0 +1,15 @@ +name: 使用 ABS 构建平台构建容器镜像 +desc: 使用 ABS 构建平台构建容器镜像,体验 ABS 构建服务 +image: Anolis OS 8.4 ANCK 64位 +live_time: 10min +machine: x86_64-2c4g +max_clients: 10 +details: + steps: + start: start.md + - name: 登陆 ABS 平台 + content: step2.md + - name: 创建一个项目 + content: step3.md + - name: Docker 容器构建 + content: step4.md diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /start.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /start.md" new file mode 100644 index 0000000..883d828 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /start.md" @@ -0,0 +1 @@ +ABS 构建平台为用户提供了一站式的构建服务,用户可以通过平台快速构建软件包、ISO 镜像、Docker 容器镜像等。本章节将通过 ABS 平台构建一个 Docker 容器镜像。 \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step2.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step2.md" new file mode 100644 index 0000000..2f885eb --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step2.md" @@ -0,0 +1,13 @@ +1. 前往 ABS平台 。 + +2. 登录 ABS。 + + ![](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/anolis-courses/abs/create_package/assets/abs-task-001.png) + + 点击登录,输入龙蜥社区帐号(如果没有帐号需要先注册一个社区帐号,然后使用新注册的帐号进行登录) + +3. 登录以后,进入个人空间。 + + ![](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/anolis-courses/abs/create_package/assets/abs-task-002.png) + + 登录之后,点击我的,进入个人空间 diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step3.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step3.md" new file mode 100644 index 0000000..83fae4b --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step3.md" @@ -0,0 +1,11 @@ +1. 在个人空间中,如果没有项目点击新建,增加项目;如果已经存在项目无需新建,直接到步骤三即可。项目是构建任务的集合,所有的构建任务都在项目中进行。 + + ![](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/anolis-courses/abs/create_package/assets/abs-task-003.png) + +2. 填写信息后完成创建。 + + ![](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/anolis-courses/abs/create_package/assets/abs-task-004.png) + +3. 在公开项目列表中找到这个你的项目,并点击进入项目页。 + + ![](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/anolis-courses/abs/create_package/assets/abs-task-005.png) diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step4.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step4.md" new file mode 100644 index 0000000..43ad370 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\344\275\277\347\224\250 ABS \346\236\204\345\273\272\345\271\263\345\217\260\346\236\204\345\273\272\345\256\271\345\231\250\351\225\234\345\203\217 /step4.md" @@ -0,0 +1,68 @@ +1. 在项目页中,点击**云原生构建->新建构建->容器镜像构建**。 + + ![abs-docker-task-001.png](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1665398810939-abs-docker-task-001.png) + +2. 添加构建信息,构建名称、描述,DockerFile 配置文件等。 + + ![abs-docker-task-002.png](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1665398832346-abs-docker-task-002.png) + + 点击**切换文本模式**,通过文本模式生成 DockerFile 配置文件。 + + ![abs-docker-task-003.png](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1665398845246-abs-docker-task-003.png) + + 点击复制**模版**按钮,修改成自己的模版,请参考如下: +``` +# Dockerfile + +####################################################### +##docker base image selection part: +# select AnolisOS tag +# The available selection: 8.6-x86_64/8.6-aarch64/7.9-x86_64/7.9-aarch64 +# sample:FROM registry.hub.docker.com/openanolis/anolisos:8.6-x86_64 +FROM registry.hub.docker.com/openanolis/anolisos:8.6-x86_64 +##################################################### + +ENV container docker +RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); rm -f /lib/systemd/system/multi-user.target.wants/*;rm -f /etc/systemd/system/*.wants/*;rm -f /lib/systemd/system/local-fs.target.wants/*; rm -f /lib/systemd/system/sockets.target.wants/*udev*; rm -f /lib/systemd/system/sockets.target.wants/*initctl*; rm -f /lib/systemd/system/basic.target.wants/*;rm -f /lib/systemd/system/anaconda.target.wants/*; +##################################################### +########## customize configuration block ########### +## pre-install part: +# write commands here +# sample: touch /etc/anolis-preinstall.log +# +#################################################### +## package installation part +# if the packages that will be installed were supplied by the official repo.you can install them in this way: +# sample: yum install mariadb-server -y +# if the packages were supplied by some other repos,please install them in this way: +# rpm --import +# yum --repofrompath=, install -y +# sample: rpm --import file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ANOLIS;# yum --repofrompath=AppStream-custom,https://mirrors.openanolis.cn/anolis/8.6/AppStream/x86_64/os/ install -y redis;# + +RUN yum --nogpgcheck --disablerepo=AppStream --repofrompath=ShangMi,https://mirrors.aliyun.com/anolis/8.6/ShangMi/x86_64/os -y install qatengine asynch_mode_nginx +# +################################################### +## post-install part +# write command here +# sample: touch /etc/anolis-after-install.log; +# +#################################################### +VOLUME [ "/sys/fs/cgroup" ] + +EXPOSE 80 +EXPOSE 443 + +STOPSIGNAL SIGQUIT + +CMD ["nginx", "-g", "daemon off;"] + +``` + 填写完构建信息后点击**立即构建** 按钮进行构建自定义Nginx镜像 + +3. 点完**立即构建**按钮之后回到列表页,点击构建的任务,查询构建详情。 + + ![abs-docker-task-004.png](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1665398857950-abs-docker-task-004.png) + + ![abs-docker-task-005.png](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1665398870344-abs-docker-task-005.png) + + 构建成功后复制并执行命令即可拉取到构建的镜像。 diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/finish.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/finish.md" new file mode 100644 index 0000000..18fa729 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/finish.md" @@ -0,0 +1 @@ +本实验通过自定义Nginx镜像,启动两个版本的镜像容器并使用ab来测试对比查看性能差异,可以看到Anolis系统中已经做的部分性能优化,类似的优化还有很多,再结合ABS平台可以轻松制作自己的容器镜像并利用到Anolis系统中已有的这些优化方案。 \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/index.yaml" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/index.yaml" new file mode 100644 index 0000000..16e640b --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/index.yaml" @@ -0,0 +1,20 @@ +name: 镜像下载与测试 +desc: 下载前述自定义镜像以及Nginx官方镜像,运行并通过ab来测试查看性能。 +image: Anolis OS 8.4 ANCK 64位 +live_time: 10min +machine: x86_64-ecs.g7.xlarge +max_clients: 10 +details: + steps: + start: start.md + - name: 创建自定义签名 + content: step2.md + - name: 拉取自定义镜像并启动 + content: step3.md + - name: 安装测试工具并测试 + content: step4.md + - name: 拉取官方镜像并启动 + content: step5.md + - name: 测试官方镜像的https性能 + content: step6.md + finish: finish.md diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/start.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/start.md" new file mode 100644 index 0000000..8d2d559 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/start.md" @@ -0,0 +1,4 @@ +AnolisOS中针对不同的组件做了大量的优化工作,本步骤主要为了测试验证前述步骤中生成的镜像针对Nginx的https所做的加速优化【具体分析可以参考龙蜥社区的[最佳实践文档](https://openanolis.cn/sig/crypto/doc/390714951012679780)】 +请使用前面步骤中的镜像地址替换后续步骤中提到的自定义镜像地址。 +如果没有自定义镜像地址,可以使用后续步骤中提到的测试地址registry.hub.docker.com/openanolis/temp:zhangli-20220922141400140130684460928来继续。 + diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step2.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step2.md" new file mode 100644 index 0000000..e1bd746 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step2.md" @@ -0,0 +1,9 @@ +本实验主要为了验证https的功能,所以需要密钥文件,测试的时候该文件可以通过OpenSSL提供的工具自己创建。 + +``` +mkdir certs +cd certs +openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/C=US/ST=State/L=Locality/O=Company/OU=Section/CN=example.com" + +``` +这样你可以在certs目录下得到server.crt和server.key两个文件,这个目录可以用于后续Nginx启用HTTPS功能时的密钥。 \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step3.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step3.md" new file mode 100644 index 0000000..580481b --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step3.md" @@ -0,0 +1,95 @@ +拉取自定义镜像(请注意替换下面命令中的自定义镜像地址) + +``` +docker pull registry.hub.docker.com/openanolis/temp:zhangli-20220922141400140130684460928 +``` + +从前述步骤的certs目录退回上级目录,并新建nginx.qat.conf,其内容如下: +``` +cd .. +cat nginx.qat.conf +worker_processes 1; + +load_module modules/ngx_ssl_engine_qat_module.so; +ssl_engine { + use_engine qatengine; + default_algorithms ALL; + qat_engine { + qat_offload_mode async; + qat_notify_mode poll; + } +} + +events { + use epoll; + worker_connections 10240; + accept_mutex on; +} +pid /var/run/nginx.pid; + +http { + include mime.types; + default_type application/octet-stream; + + sendfile on; + keepalive_timeout 65; + access_log off; + + server { + listen 80 reuseport backlog=131072 rcvbuf=65536 sndbuf=65536; + server_name localhost; + + location / { + root html; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } + + # HTTPS server + server { + listen 443 ssl reuseport backlog=131072 so_keepalive=off rcvbuf=65536 sndbuf=65536; + + tcp_nopush on; + tcp_nodelay on; + lingering_close off; + + server_name example.com; + + ssl_protocols TLSv1.2; + ssl_asynch on; + ssl_buffer_size 64k; + + ssl_verify_client off; + ssl_session_tickets off; + + ssl_certificate /etc/nginx/certs/server.crt; + ssl_certificate_key /etc/nginx/certs/server.key; + + ssl_session_cache off; + ssl_session_timeout 5m; + + ssl_ciphers AES256-SHA; + ssl_prefer_server_ciphers on; + + location / { + root html; + index index.html index.htm; + } + } +} +``` +请复制上述内容并保存为nginx.qat.conf + +启动容器的命令如下: + +``` +docker run --name mynginx -p 8443:443 -v /root/nginx.qat.conf:/etc/nginx/nginx.conf -v /root/certs:/etc/nginx/certs -d registry.hub.docker.com/openanolis/temp:zhangli-20220922141400140130684460928 +``` + +通过上述命令启动自定义Nginx镜像并绑定443端口到8443。 +可以通过docker ps 查看是否运行正常。 diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step4.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step4.md" new file mode 100644 index 0000000..e79ba45 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step4.md" @@ -0,0 +1,9 @@ +常用的测试工具有ab, wrk等多种,为了方便我们直接安装系统默认源中有的ab并进行测试。 + +``` +yum install httpd-tools + +ab -n 100000 -c 1000 -f TLS1.2 https://localhost:8443/index.html +``` + +可以查看其结果中的Requests per second并记录下来方便对照性能数据。 \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step5.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step5.md" new file mode 100644 index 0000000..958c88b --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step5.md" @@ -0,0 +1,81 @@ +为了验证针对https的性能优化,可以对比Nginx官方最新版本。 + +``` +docker pull nginx +``` + +配置文件大致跟前述相似,略作调整如下: +``` +cd /root/ +cat nginx.conf +worker_processes 1; + + +events { + use epoll; + worker_connections 10240; + accept_mutex on; +} +pid /var/run/nginx.pid; + +http { + include mime.types; + default_type application/octet-stream; + + sendfile on; + keepalive_timeout 65; + access_log off; + + server { + listen 80 reuseport backlog=131072 rcvbuf=65536 sndbuf=65536; + server_name localhost; + + location / { + root html; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } + + # HTTPS server + server { + listen 443 ssl reuseport backlog=131072 so_keepalive=off rcvbuf=65536 sndbuf=65536; + + tcp_nopush on; + tcp_nodelay on; + lingering_close off; + + server_name example.com; + + ssl_protocols TLSv1.2; + ssl_buffer_size 64k; + + ssl_verify_client off; + ssl_session_tickets off; + + ssl_certificate /etc/nginx/certs/server.crt; + ssl_certificate_key /etc/nginx/certs/server.key; + + ssl_session_cache off; + ssl_session_timeout 5m; + + ssl_ciphers AES256-SHA; + ssl_prefer_server_ciphers on; + + location / { + root html; + index index.html index.htm; + } + } +} +``` +请复制并保存上述内容为nginx.conf,并通过下述命令启动容器【启动前先停止之前启动的容器mynginx】: +``` +docker stop mynginx +docker run --name nginx -p 8443:443 -v /root/nginx.conf:/etc/nginx/nginx.conf -v /root/certs:/etc/nginx/certs -d nginx +``` +可以通过docker ps查看启动状况 \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step6.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step6.md" new file mode 100644 index 0000000..54ebc84 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\225\234\345\203\217\344\270\213\350\275\275\344\270\216\346\265\213\350\257\225/step6.md" @@ -0,0 +1,6 @@ +可以使用一样的命令来测试: + +``` +ab -n 100000 -c 1000 -f TLS1.2 https://localhost:8443/index.html +``` +查看结果中的Requests per second部分并对比之前的结果。 \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/index.yaml" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/index.yaml" new file mode 100644 index 0000000..9277278 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/index.yaml" @@ -0,0 +1,15 @@ +name: 龙蜥社区容器镜像发布流程 +desc: 熟悉龙蜥社区容器镜像发布流程,体验社区CI/CD服务 +image: Anolis OS 8.4 ANCK 64位 +live_time: 10min +machine: x86_64-2c4g +max_clients: 10 +details: + steps: + start: start.md + - name: 提交PR + content: step2.md + - name: 容器镜像CI/CD + content: step3.md + - name: 发布正式镜像 + content: step4.md diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/start.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/start.md" new file mode 100644 index 0000000..0068dc1 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/start.md" @@ -0,0 +1,3 @@ +龙蜥社区针对容器镜像发布提供一站式的CI/CD服务,帮助用户自动构建容器镜像,测试镜像,发布镜像。 + +注:本章节为社区容器镜像正式发布流程介绍,开发者仅需了解流程,无需实际操作。 \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step2.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step2.md" new file mode 100644 index 0000000..7e0b827 --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step2.md" @@ -0,0 +1,11 @@ +1. 前往 容器镜像官方仓库 。 + +2. 将官方仓库fork到个人空间中。 + +![docker_cicd_1.jpg](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1666252088343-docker_cicd_1.jpg) + +3. 将需要发布的容器镜像Dockerfile文件提交到个人仓库中。 + +4. 创建PR,填写相关信息,提交PR请求。 + +![docker_cicd_2.jpg](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1666252437597-docker_cicd_2.jpg) \ No newline at end of file diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step3.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step3.md" new file mode 100644 index 0000000..56bb43d --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step3.md" @@ -0,0 +1,7 @@ +1. 提交PR后,系统自动触发容器镜像构建与测试,并将构建结果和测试结果回复到PR中。 + +![docker_cicd_3.jpg](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1666252660243-docker_cicd_3.jpg) + +2. 如果测试未通过,请修改代码,然后回复/retest再次进行测试,直至测试通过。 + +![docker_cicd_4.jpg](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1666252694800-docker_cicd_4.jpg) diff --git "a/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step4.md" "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step4.md" new file mode 100644 index 0000000..cbd56cd --- /dev/null +++ "b/anolis-courses/\351\276\231\350\234\245\345\256\271\345\231\250\351\225\234\345\203\217-\351\253\230\346\200\247\350\203\275Nginx\351\276\231\350\234\245\351\225\234\345\203\217\345\256\236\351\252\214/\351\276\231\350\234\245\347\244\276\345\214\272\345\256\271\345\231\250\351\225\234\345\203\217\345\217\221\345\270\203\346\265\201\347\250\213/step4.md" @@ -0,0 +1,9 @@ +1. 测试通过后,由maintainer进行review,如果review通过,则由maintainer回复/merge进入正式发布流程。 + +![docker_cicd_5.jpg](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1666252764254-docker_cicd_5.jpg) + +2. 系统自动将PR中构建的容器镜像,推送到正式地址,可以通过测试任务中的测试结果链接查看推送结果。 + +![docker_cicd_6.jpg](https://anolis-pub-share.oss-cn-hangzhou.aliyuncs.com/anolis-lab/assets/1666318750470-docker_cicd_6.jpg) + + -- Gitee