Docker容器在两级应用中的使用

在现代IT行业中,应用程序架构的部署和管理方式正在经历一场革命。Docker容器技术以其轻量级、可移植性强和易于管理的特点,逐渐成为构建和部署应用程序的首选方式。本文将探讨如何在Docker容器中创建和使用一个简单的两级应用程序。

两级应用简介

两级应用架构是一种常见的应用程序架构,它只包含两个主要层级:Web层和数据库层。

Web层是前端应用程序代码的托管地。前端应用程序可以通过互联网公开访问。

软件栈:Apache和PHP

数据库层是应用程序数据库引擎和数据库的托管地。数据库仅从Web层访问。

软件栈:MySQL

注意:在N层架构中,有三层。有关更多详细信息,请参阅CodeProject上的。在两级架构中,表示层和业务逻辑层合并到Web层。

为什么选择Docker而不是虚拟机

在IT行业中,通常会为每个层级单独使用虚拟机或容器。在传统的虚拟化中,在虚拟机监视器上为每个层级创建不同的虚拟机,而在Docker引擎中,创建不同的容器。将虚拟机从一个位置移动到另一个位置是一项繁琐的任务,原因有很多,比如应用程序依赖的库、安装的软件等。而在Docker中,这非常简单,因为Docker容器创建了一个包含所有应用程序特定和服务器相关文件的完整文件系统的软件包。

使用代码

在这种架构中,需要一个服务器,在这个服务器上需要创建两个Docker容器。一个用于前端,另一个用于数据库容器。

以下命令将创建一个带有PHP和Apache的Docker容器。这将覆盖服务器中的Web层。

docker run -d -p 80:80 --name apache-php-name -v "$PWD":/var/www/html php:7.2-apache

其中apache-php-name是Docker容器的名称,/var/www/html是安装Apache的默认路径,80:80将Docker容器的80端口指向虚拟机的80端口。

执行以下命令在同一服务器上运行带有MySQL数据库的Docker容器。这将覆盖同一服务器上的数据库层。

docker run --name mysql-name -e MYSQL_ROOT_PASSWORD=mysql-password -d mysql:version-tag

其中mysql-name是MySQL容器的名称,mysql-password是为MySQL数据库root用户设置的密码,version-tag是指定MySQL版本的标签。默认情况下,MySQL将启动在:

检查容器使用以下命令:

docker ps

要删除所有容器,请使用以下命令:

docker stop $(docker ps -aq)

在这种架构中,需要两个单独的服务器。每个服务器包含在单独的层中,如上图所示。虚拟机#2运行数据库容器,此容器仅从虚拟机#1访问。这是为了避免将数据库服务器的访问权限开放给全世界。

假设有两个虚拟机,VM#1和VM#2。

在VM#1上,运行以下命令,设置PHP和Apache Docker容器。

docker pull php:7.2-apache docker run -d -p 80:80 --name apache-php-web-tier -v "$PWD":/var/www/html php:7.2-apache

在VM#2上,运行以下命令设置MySQL Docker容器。

docker pull mysql docker run --name mysql-db-tier -e MYSQL_ROOT_PASSWORD=Admin@Pass -d mysql
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485