docker部署nginx+php+mysql

拉取相应的docker镜像

docker官方镜像地址:https://hub.docker.com
docker中文文档:http://www.dockerinfo.net/document

docker  pull  mysql:5.7.33;
docker  pull  php:7.2-fpm;
docker  pull  nginx:1.18.0;
docker  pull  centos:7.2.1511;

思路:利用数据卷容器来做数据持久化,mysql,php,nginx挂载数据卷容器。

前奏

在宿主机上创建共享数据目录

/dockerdatavolume
└───www
│
└───services
│       └───mysql-5.7
│       │       └───config
│       │       └───data
│       │       └───log
│       └───php-7.2
│       │       └───config
│       │       └───log
│       └───nginx-1.18.0
│       │       └───config
│       │       └───log
cd  / 
mkdir  dockerdatavolume

cd  dockerdatavolume/

mkdir www

mkdir  services/mysql-5.7/config
mkdir  services/mysql-5.7/data
mkdir  services/mysql-5.7/log

mkdir  services/php-7.2/config
mkdir  services/php-7.2/log

mkdir  services/nginx-1.18.0/config
mkdir  services/nginx-1.18.0/log

一、创建一个nginx临时容器

  • 将容器内 /etc/nginx/conf.d 文件夹复制到 /dockerdatavolume/services/nginx-1.18/config 目录下
  • 将容器内 /etc/nginx/nginx.conf 文件复制到 /dockerdatavolume/services/nginx-1.18/config 目录下

二、创建一个php7.2-fpm临时容器

  • 将容器内 /usr/local/etc 目录下的所有文件复制到 /dockerdatavolume/services/php-7.2/config 下

三、创建一个mysql5.7临时容器

  • 将容器内 /etc/mysql 目录下的所有文件复制到 /dockerdatavolume/services/mysql5.7/config 下
1.生成数据卷容器
docker run  -v  /dockerdatavolume:/dockerdatavolume  --name  common_data_container  centos:7.2.1511
2.创建mysql容器
docker run \
--volumes-from common_data_container  \
-v  /dockerdatavolume/services/mysql-5.7/config:/etc/mysql:ro  \
-v  /dockerdatavolume/services/mysql-5.7/data:/var/lib/mysql  \
--name mysql5.7  \
-p 33066:3306  \
-e MYSQL_ROOT_PASSWORD=123456  \
-d mysql:5.7.33

注:为了在外部能使用root用户连接mysql,需要进入容器修改root用户的密码

#进入容器
docker exec -it mysql5.7 /bin/bash

#进入容器修改root用户的密码
mysql -u root -p 123456

#进入到mysql中
mysql>GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '123456';
mysql>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456';
mysql>GRANT ALL PRIVILEGES ON *.* TO root@'127.0.0.1' IDENTIFIED BY '123456';
mysql>FLUSH PRIVILEGES;
#退出容器
mysql>exit
创建php容器
docker run  \
--volumes-from common_data_container  \
-v  /dockerdatavolume/services/php-7.2/config:/usr/local/etc:ro  \
--name php7.2-fpm  \
--link mysql5.7:mysql  \
-d php:7.2-fpm

注:由于镜像未安装mysqli扩展,需要进入容器安装插件

/*
* docker中php开启mysqli扩展
* 找到php.ini,一般在/usr/local/etc/php/php.ini中,通过copy复制到宿主机之后去掉php_mysql.so前面的分号后上传
* 进入容器扩展安装目录/usr/local/bin
* 执行命令安装扩展      docker-php-ext-install mysqli
* 重启容器   docker restart php7.2-fpm
*/
docker  exec  -it  php7.2-fpm  /bin/bash
cd  /usr/local/bin
docker-php-ext-install  mysqli
docker  restart  php7.2-fpm
创建nginx容器
docker run  \
--volumes-from common_data_container  \
-v  /dockerdatavolume/services/nginx-1.18/config/conf.d:/etc/nginx/conf.d:ro  \
-v  /dockerdatavolume/services/nginx-1.18/config/nginx.conf:/etc/nginx/nginx.conf:ro  \
-v  /dockerdatavolume/www:/usr/share/nginx/html  \
--name  nginx1.18  \
-p 8080:80  \
--link php7.2-fpm:php7.2  \
-d nginx:1.18.0
小贴士

docker run -v /dockerdatavolume/services/nginx-1.18/config/conf.d:/etc/nginx/conf.d:ro -d nginx:1.18.0

  1. 问题:-v /dockerdatavolume/services/nginx-1.18/config/conf.d:/etc/nginx/conf.d:ro 后面的 :ro 是什么意思?
    解释:-v 操作在容器创建的过程时候可以将宿主机的目录挂载到容器内
  • 在容器内部该目录下,或者宿主机内部该目录下,修改文件、创建文件,彼此都会同步修改
  • 默认情况下,对于容器而言是读写的权限,可以使用 ro ,使容器只有读权限
  1. php7.2-fpm镜像内的目录情况:
php:7.2-fpm下:
#配置目录
/usr/local/etc/                pear.conf  php	php-fpm.conf  php-fpm.conf.default  php-fpm.d
/usr/local/etc/php-fpm.d/      docker.conf  www.conf  www.conf.default  zz-docker.conf
/usr/local/etc/php/            conf.d	php.ini-development  php.ini-production
#www根目录	
/var/www/html
  1. nginx-1.18.0镜像内的目录情况:
#配置目录
/etc/nginx/   conf.d	fastcgi_params	koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params	uwsgi_params  win-utf
#域名配置目录
/etc/nginx/conf.d
#nginx.conf配置文件
/etc/nginx/nginx.conf
#www根目录
/usr/share/nginx/html
#日志文件,建议此处不用处理
/var/log/nginx/error.log
/var/log/nginx/access.log
  1. mysql5.7镜像内的目录情况:
#配置文件目录
/etc/mysql/      conf.d	my.cnf	my.cnf.fallback  mysql.cnf  mysql.conf.d
#数据表存放目录
/var/lib/mysql
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值