环境
在CentOS下使用Docker搭建php/nginx/mariadb/phpmyadmin环境
Docker部署的好处
1、标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
2、节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
3、方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
4、节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;
5、方便持续集成,通过与代码进行关联使持续集成非常方便;
6、可以作为集群系统的轻量主机或节点。
镜像获取
在线获取
php-nginx 镜像
这里使用的PHP/Nginx镜像是
php和nginx的融合版本
php: 7.4.24
nginx: 1.20.1
执行以下命令拉取镜像到本地
1 | docker pull webhippie/php-nginx:7 |
mariadb 数据库镜像
执行以下命令拉取镜像到本地
1 | docker pull mariadb |
phpmyadmin 镜像
执行以下命令拉取镜像到本地
1 | docker pull phpmyadmin |
离线获取
导出镜像
可通过以下命令将本地现成镜像导出为tar包
1 | docker save -o php-nginx.tar webhippie/php-nginx:7 |
下载镜像
也可直接下载本站提供的已导出的镜像tar包
云盘下载 提取码: rd74
导入离线镜像
导入离线镜像tar包
1 | # 导入php-nginx镜像 |
创建容器并运行
创建挂载目录
创建主机挂载目录,将容器内数据挂载到宿主机,防止误删容器导致数据丢失
创建nginx挂载目录,挂载项目文件、配置文件、日志
1 | mkdir -p /data/nginx/{conf,html,logs} |
创建mariadb挂载目录,挂载数据库文件
1 | mkdir -p /data/mariadb/data |
启动mariadb数据库容器
1 | docker run \ |
使用docker run启动容器
--name
:容器名称,可根据需求修改--restart=always
:设置容器自动启动--privileged=true
:特权级运行容器-p
:将容器3306(右侧)端口映射到主机3306(左侧)端口,可根据需求修改。-e
:使用环境变量MYSQL_ROOT_PASSWORD设置数据库密码为root,密码请做修改-v
:将容器/var/lib/mysql目录挂载到主机/data/mariadb/data目录-d
:后台运行容器,并返回容器IDmariadb
:使用的镜像名称以及版本
数据库访问地址:http://localhost:3306
启动phpmyadmin容器
1 | docker run \ |
--name
:容器名称,可根据需求修改--restart=always
:设置容器自动启动-p
:将容器80(右侧)端口映射到主机8080(左侧)端口,可根据需求修改-e
:使用环境变量UPLOAD_LIMIT设置sql文件上传大小限制,使用环境变量MEMORY_LIMIT 设置占用的最大内存-link
:将名为mariadb的容器链接到容器内,db为源容器在link下的别名,db为制式不可修改-d
:后台运行容器,并返回容器IDphpmyadmin
:使用的镜像名称以及版本
phpmyadmin访问地址:http://localhost:8080
启动php-nginx容器
将项目文件上传至/data/nginx/html
目录,并确保/data/nginx/html/public
真实存在,因为该public
目录会在下面的代码中被挂载至容器内部,并被设置为nginx
的根目录运行
1 | docker run \ |
--name
:容器名称,可根据需求修改--restart=always
:设置容器自动启动--privileged=true
:特权级运行容器-p
:将容器8080(右侧)端口映射到主机80(左侧)端口,可根据需求修改,容器内端口无法修改,若有特殊需求请使用官方镜像另行部署。比如使用host网络时,可在宿主机编译安装nginx做80端口转发-e
:使用环境变量NGINX_WEBROOT设置nginx的根目录,这里设置的public目录为个人使用的项目框架访问目录,比如ThinkPHP也需要相应的设置-v
:分别将容器内的custom.d、html、nginx目录挂载到主机目录--link
:将名为mariadb(左侧)的容器链接到容器内,mariadb为源容器在link下的别名,这样连接数据库时host可以直接填写为mariadb
,无需填写IP地址-d
:后台运行容器,并返回容器IDphp-nginx
:使用的镜像名称以及版本
nginx访问地址:http://localhost
条评论