Docker部署LNMP
- 一、安装docker
- 1.安装docker
- 2.镜像下载
- 二、部署MySQL
- 1.获取镜像
- 2.创建启动容器创建启动容器 huahua_mysql
- 三、部署PHP
- 1.获取镜像
- 2.创建容器
- 3.查看信息
- 四、安装nginx
- 1.获取镜像
- 2.创建运行容器
- 3.修改nginx配置文件
- 五、总结
- 1. 安装Docker和Docker Compose:
- 2. 创建Docker Compose文件:
- 3. 定义Nginx服务:
- 4. 定义MySQL服务:
- 5. 定义PHP-FPM服务:
- 6. 构建和启动容器:
- 7. 配置Nginx虚拟主机和网站文件:
- 8. 访问网站:
一、安装docker
1.安装docker
systemctl stop firewalld.service
setenforce 0
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
--------------------------------------------------------------------------------------------
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io docker-ce-20.10.18
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
yum install -y docker-ce docker-ce-cli
docker -v #查看版本
2.镜像下载
(1)镜像仓库
- Nginx仓库:https://hub.docker.com/_/nginx/
- PHP仓库:https://hub.docker.com/_/php/
- MySQL仓库:https://hub.docker.com/_/mysql/
二、部署MySQL
1.获取镜像
systemctl start docker #开启docker
docker pull mysql #获取MySQL镜像
2.创建启动容器创建启动容器 huahua_mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=huahua --name huahua_mysql mysql
三、部署PHP
1.获取镜像
docker pull php:7.2-fpm
2.创建容器
docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link huahua_mysql:mysql --name huahua_phpfpm php:7.2-fpm
3.查看信息
docker ps
(1)测试主机目录是否映射到PHP目录中
[root@docker ~]# docker exec -it 4e860509a2b7 /bin/bash #进入PHP容器
root@4e860509a2b7:/var/www/html# touch index.php #创建测试文件
root@4e860509a2b7:/var/www/html# ls
index.php
root@4e860509a2b7:/var/www/html# exit #退出容器
exit
[root@docker ~]# ls /var/nginx/www/html/ #查看测试文件
index.php
(2)修改配置文件
vim /var/nginx/www/html/index.php
<?php
echo phpinfo();
?>
(3)进入容器安装PHP依赖环境
docker exec -it 4e860509a2b7 /bin/bash
pecl install redis && docker-php-ext-enable redis
(4)检查安装
php -m
四、安装nginx
1.获取镜像
docker pull nginx:1.12.2
2.创建运行容器
docker run -d -p 80:80 --name huahua_nginx -v /var/nginx/www/html:/var/www/html --link huahua_phpfpm:phpfpm --name huahua_nginx nginx:1.12.2
docker ps #查看信息
3.修改nginx配置文件
(1)进入容器修改配置
docker exec -ti huahua_nginx /bin/bash
(2)修改/etc/nginx/conf.d/default.conf配置
但是容器里是没有安装vim的,先从容器内导出配置文件,在容器外编辑然后拷贝进去
① 将配置文件复制到我创建的test文件夹下
mkdir test
docker cp a398662acaa1:/etc/nginx/conf.d/default.conf ./test/
② 修改配置
vim /test/default.conf
③ 修改后的配置文件传入容器中
docker cp ./test/default.conf a398662acaa1:/etc/nginx/conf.d/default.conf
④ 再次进入容器从新加载配置文件
nginx -t
nginx -s reload
⑤ 测试是否成功
ss -anlt #查看主机与容器的端口映射
- 浏览器测试:192.168.174.15/index.php
五、总结
使用Docker搭建LNMP(Linux + Nginx + MySQL + PHP)应用环境可以有效简化部署过程并提高可移植性。以下是使用Docker搭建LNMP环境的简要总结:
1. 安装Docker和Docker Compose:
- 在Linux上,使用包管理器安装Docker并启动Docker服务。
- 安装Docker Compose以简化多容器应用的管理。
2. 创建Docker Compose文件:
- 创建一个名为
docker-compose.yml
的文件,并在其中定义LNMP环境所需的服务和容器配置。
3. 定义Nginx服务:
- 在Docker Compose文件中定义一个Nginx服务,并指定容器映射的端口和Nginx配置文件。
4. 定义MySQL服务:
- 在Docker Compose文件中定义一个MySQL服务,并配置容器中MySQL的环境变量和存储数据的卷。
5. 定义PHP-FPM服务:
- 在Docker Compose文件中定义一个PHP-FPM服务,并指定与Nginx容器连接的卷。
6. 构建和启动容器:
- 在终端中使用
docker-compose up -d
命令构建和启动LNMP环境的容器。
7. 配置Nginx虚拟主机和网站文件:
- 在主机上创建Nginx的虚拟主机配置文件,并将网站文件放在指定的位置。
8. 访问网站:
- 使用浏览器访问配置的域名或IP地址,检查是否能够正确访问到Nginx和PHP-FPM服务,以及连接到MySQL数据库。
使用Docker搭建LNMP环境可以使配置和部署更容易和可移植,并提供灵活性和扩展性,使开发者能够快速搭建和管理LNMP应用程序。然而,在实际使用过程中仍需根据具体需求和情况进行适当的调整和优化。