通过ACR快速部署网站应用实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本场景介绍如何在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。

背景知识

容器镜像服务ACR

阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托管及高效分发平台。ACR企业版支持全球同步加速、大规模和大镜像分发加速、多代码源构建加速等全链路加速能力,与容器服务ACK无缝集成,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。

产品地址:https://www.aliyun.com/product/acr?spm=5176.28055625.J_4VYgf18xNlTAyFFbOuOQe.101.de16154asya4Hb

产品优势:

image.png

版本对比:

image.png

ACR全场景:

image.png


实验介绍

本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,并实现通过公网地址访问wordpress网站。

步骤如下:

1、创建实验资源ECS

2、开通容器镜像服务ACR

3、安装Docker服务

4、构建wordpress镜像

5、上传镜像至ACR镜像仓库

6、安装Mariadb数据库

7、通过镜像运行wordpress应用

8、访问并配置wordpress网站应用

9、释放资源


通过ACR快速部署网站应用

首先进入ECS界面,创建一台服务器,输入如下链接。

https://ecs.console.aliyun.com/

image.png

点击创建实例按钮,进入云服务器ECS创建界面。

image.png

因为是实验环境,配置按照如下即可:

image.png

image.png

image.png

image.png

image.png

image.png

以上配置都选择完成后,勾选右下角的《云服务器ECS服务条款》并点击确认下单,显示创建成功页面后,点击管理控制台进入ECS控制台界面。

image.png

接下来创建ACR服务

在阿里云控制台搜索框中搜索ACR,并点击搜索结果中控制台下的容器镜像服务ACR按钮进入云服务器ACR控制台。或者在远程桌面的Chromium网页浏览器中输入如下地址直接进入ACR控制台:

https://cr.console.aliyun.com/

image.png

进入ACR控制台后,选择华东1(杭州)地域(必须保证同一地域),点击个人实例方框进入个人版实例创建界面。

image.png

创建完成后,会自动进入个人实例,点击设置Registry登录密码设置ACR密码。

image.png

接下来需要创建镜像仓库的命名空间,点击左侧命名空间按钮,进入命名空间创建界面,在点击创建命名空间按钮,在弹出的命名空间设置界面填入命名空间名称wordpress-zouhsh(*可以使用您个人的姓名拼音替代)。

【注意:命名空间具有全局唯一性,如果您起的名字已经被占用,可以更换一个,但请记住命名空间的名字,后续步骤将会使用到。】

image.png

点击左侧镜像仓库按钮,进入镜像仓库创建界面,选择华东1(杭州)地域,在点击创建镜像仓库按钮,在弹出的镜像仓库设置界面选择上一步骤中创建的命名空间wordpress-zouhsh(取决于您的实际命名),仓库名称填写为wordpress,仓库类型默认选择私有,摘要信息填写为wordpress镜像仓库,在点击下一步。

image.png

在代码源选择界面中选择本地仓库,再点击创建镜像仓库进行创建。

image.png

创建完成后,会自动进入镜像仓库基本信息界面,后续可以在镜像仓库列表中点击wordpress仓库名称进入镜像仓库基本信息界面。

image.png

回到ECS控制台界面中,点击刚才创建的ECS实例右侧的远程连接按钮连接服务器ECS(workbench方式)。

image.png

在密码认证下输入密码,在点击确定按钮连接服务器ECS。

image.png

连接上服务器ECS后,按照以下步骤安装Docker服务。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

其中:

device-mapper-persistent-data: 是一个用于 LVM(逻辑卷管理)的设备映射程序,用于提供高度抽象化的磁盘存储管理,并支持磁盘扩容、快照等功能。

lvm2: 是 Linux 下逻辑卷管理程序,用于创建、管理和控制逻辑卷。

image.png

接下来添加软件源信息。

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

其中:

yum-config-manager:是一个 yum 命令的子命令,用于管理 yum 的配置。

--add-repo:选项用于向 yum 配置中添加一个软件仓库。

这是一个包含 Docker CE 软件包信息的仓库地址。通过这个命令,会将该仓库地址添加到 yum 的配置中。

添加完成后,系统就会知道从这个仓库获取 Docker CE 相关的软件包和更新。这个特定的仓库地址指向了阿里云镜像站点,可以更快地从该镜像站点下载 Docker CE 相关的软件包,加快安装速度。

image.png

接下里设置yum源。

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

其中:

's+download.docker.com+mirrors.aliyun.com/docker-ce+':这是 sed 命令的替换表达式,用于将文件中的 download.docker.com 替换为 mirrors.aliyun.com/docker-ce。

etc/yum.repos.d/docker-ce.repo:这是要进行修改的目标文件路径,即 Docker CE 的仓库配置文件。

image.png

更新Docker-CE。

sudo yum makecache fast

image.png

安装Docker-CE。

sudo yum -y install docker-ce

image.png

启动Docker服务。

sudo systemctl start docker

image.png

查看Docker服务运行状态,Active显示为:active(running) 表示Docker服务运行正常。

sudo systemctl status docker

image.png

设置Docker服务开机自启动。

sudo systemctl enable docker

image.png

至此,docker部署完毕。

继续在连接的服务器ECS上执行以下步骤构建WordPress镜像。

创建WordPress镜像制作目录makeWordpress并进入该目录。

mkdir -p /makeWordpress
cd /makeWordpress

image.png

下载Dockerfile文件和配置文件。

wget https://wordpress-clouder.oss-cn-hangzhou.aliyuncs.com/Dockerfile

image.png

wget https://wordpress-clouder.oss-cn-hangzhou.aliyuncs.com/docker-entrypoint.sh

image.png

设置文件权限

chmod 755 docker-entrypoint.sh

image.png

制作镜像(此过程大致需要运行5-10分钟左右)

docker build -t="wordpress:v1" /makeWordpress

其中:

docker build:这是一个 Docker 命令,用于构建 Docker 镜像。

-t="wordpress:v1":这是一个选项,用于给构建的镜像指定一个标签。在这个例子中,镜像的标签被设置为 "wordpress:v1",其中 "wordpress" 是镜像的名称,"v1" 是版本号。

/makeWordpress:这是指定 Docker 构建上下文路径的参数。Docker 构建过程中,会将这个路径指定的目录作为构建上下文,并将其中的文件复制到镜像中。

综合来说,执行这个命令会在当前目录下的 /makeWordpress 目录中查找构建所需的文件,然后根据这些文件构建一个名为 "wordpress"、版本为 "v1" 的 Docker 镜像。此镜像可以用于创建和运行 WordPress 应用程序的 Docker 容器。

image.png

查看构建完成的镜像

docker images

image.png

在连接的服务器ECS上执行以下步骤上传WordPress镜像。

docker login --username=用户名 registry-vpc.cn-hangzhou.aliyuncs.com

image.png

登录时输入密码,输入密码时屏幕不显示为正常现象,回车后显示Login Succeeded表示登录成功。

image.png

新增ACR镜像TAG,镜像名称为创建的个人仓库镜像ACR中的仓库地址和名称

docker tag wordpress:v1 registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1  //上述命令中的 wordpress-*** 需替换为您在开通ACR服务时创建的命名空间名称

image.png

将镜像推送到镜像仓库ACR

docker push registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1

image.png

回到根目录下,yum安装Mariadb数据库。

yum -y install mariadb mariadb-server

image.png

启动Mariadb数据库。

systemctl start mariadb

初始化Mariadb数据库,并设置root账号密码。

mysql_secure_installation

image.png

image.png

image.png

登录Mariadb数据库

mysql -uroot -p

image.png

创建wordpress数据库

create database wordpress;

image.png

授权root账号远程访问

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;

image.png

输入 exit; 可以退出数据库登陆界面

image.png

在服务器ECS上创建站点文件持久化存储目录。

cd /makeWordpress
mkdir -p /var/www/html

image.png

运行WordPress应用。

docker run --name wordpress -p 80:80 -d -v /var/www/html:/var/www/html registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1

其中:

docker run:这是一个 Docker 命令,用于创建和运行容器。

--name wordpress:这是一个选项,用于给容器指定一个名称,这里将容器命名为 "wordpress"。

-p 80:80:这是一个选项,用于将主机的端口映射到容器的端口。这里将主机的 80 端口映射到容器的 80 端口,使得可以通过主机的 IP 地址访问容器中的 WordPress 网站。

-d:这是一个选项,用于将容器以后台(守护态)模式运行,即在容器内部运行的进程在后台执行而不占用当前终端。

-v /var/www/html:/var/www/html:这是一个选项,用于将主机的目录与容器的目录进行挂载。这里将主机的 /var/www/html 目录挂载到容器的 /var/www/html 目录,以便在容器中运行的 WordPress 可以访问主机上的网页文件。

registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-*/wordpress:v1:这是要运行的镜像的地址或名称。在这个例子中,运行的是名为 "wordpress"、版本为 "v1" 的镜像,地址为 registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-*/wordpress。

执行这个命令会在 Docker 中创建和运行一个名为 "wordpress" 的容器,并映射主机的80端口到容器的80端口。容器将以后台模式运行,并与主机的 /var/www/html 目录进行挂载,使得容器中运行的 WordPress 可以访问主机上的网页文件。所使用的镜像来自阿里云镜像仓库,地址为 registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-*/wordpress,版本为 "v1"。

image.png

查看WordPress容器运行状态,STATUS显示为Up表示运行正常。

docker ps -a

【注意】在使用镜像运行应用时,需要先登录镜像仓库ACR,否则没有权限拉取到镜像。

image.png

在浏览器地址栏中输入服务器ECS公网IP,回车进入WordPress配置界面

image.png

在数据库配置界面,数据库名填入wordpress,用户名填入root,密码填入,数据库主机填入服务器的私有IP地址,表前缀使用默认值,点击提交

image.png

image.png

在账号设置页面,站点标题填入wordpress,用户名填入admin,密码填入,勾选确认密码,电子邮件填入admin@wordpress.com,在点击安装WordPress来完成安装

image.png

在安装完成后,点击登录按钮进入WordPress登录界面,账号填入admin,密码填入,点击登录按钮,进入WordPress系统

image.png

image.png

以上,我们就完成了基于容器和镜像的网站应用搭建。


资源释放

删除容器镜像服务ACR的镜像仓库,在镜像仓库列表中,选择 wordpress仓库 点击删除。

image.png

删除容器镜像服务ACR的命名空间,在命名空间列表中,选择 wordpress-* 点击删除。

image.png

回到ECS控制台,释放服务器

image.png

image.png

image.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
人工智能 弹性计算 机器人
如何在阿里云一键部署FlowiseAI
FlowiseAI 是一款开源低代码开发工具,专为构建定制化的语言学习模型(LLM)应用设计。用户可通过拖放界面轻松创建和管理AI驱动的应用,如聊天机器人和数据分析工具。它基于LangChain框架,支持多种AI模型和数据库集成,实现高度定制化的流程自动化。在阿里云上,可以通过一键部署链接快速部署FlowiseAI,并通过简单的几步配置开始使用。详细操作步骤包括创建ECS实例、获取登录信息等。更多细节可见FlowiseAI官网。
|
5月前
|
人工智能 弹性计算 自然语言处理
快速部署 MaxKB 社区版
MaxKB = Max Knowledge Base,是一款基于 LLM 大语言模型的开源知识库问答系统,旨在成为企业的最强大脑。本文介绍如何使用计算巢快速部署 MaxKB 社区版。
快速部署 MaxKB 社区版
|
6月前
|
人工智能 数据可视化 开发者
快速部署 Dify 社区版
Dify.AI 是一款 LLMOps 平台,帮助开发者更简单、更快速地构建 AI 应用。它的核心理念是通过可声明式的 YAML 文件定义 AI 应用的各个方面,包括 Prompt、上下文和插件等。Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能。这些功能使得开发者能够在数天内完成 AI 应用的开发,或将 LLM 快速集成到现有应用中,并进行持续运营和改进,创造一个真正有价值的 AI 应用。本文介绍使用计算巢快速部署 Dify 社区版。
快速部署 Dify 社区版
|
Python 应用服务中间件 nginx
在阿里云上部署ERPNext
ERPNext是一款开源ERP软件,由Rushabh Mehta于2010年创建,它包含了会计、库存、制造、CRM、销售、采购、项目管理,及人事管理等多个功能模块。本文主要介绍如何在阿里云上部署ERPNext。
6645 0
|
8月前
|
Devops Java 数据安全/隐私保护
DevOps搭建(二)-阿里云镜像仓库的使用详解
DevOps搭建(二)-阿里云镜像仓库的使用详解
193 0
|
Kubernetes Cloud Native 应用服务中间件
【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署(上)
【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署
281 0
|
Kubernetes Cloud Native 关系型数据库
【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署(下)
【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署
144 0
|
安全 Cloud Native Java
让业务容器化更安全便捷,阿里云容器镜像服务 ACR 推出免费制品中心
让业务容器化更安全便捷,阿里云容器镜像服务 ACR 推出免费制品中心
让业务容器化更安全便捷,阿里云容器镜像服务 ACR 推出免费制品中心
|
弹性计算 运维 Cloud Native
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
195 0
|
Cloud Native 对象存储 容器
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
122 0