首先写一个脚本创建需要用到的目录
#定义lnmp环境配置根目录 和网站根目录
basedir="/lnmp"
wwwroot="/wwwroot"
#首先检查下存不存在这两个目录
if [ -e $baseroot ]
then
echo "lnmp dir is exits"
exit 0
fi
if [ -e $wwwroot]
then
echo "wwwroot dir is exits"
exit 0
fi
#创建根目录
mkdir $baseroot
mkdir $wwwroot
#进入lnmp环境根目录
cd $basedir
#创建mysql目录存放mysql 配置和data
mysqlcnf="mysql/conf"
mysqldata="mysql/data"
mkdir -p $mysqlcnf
mkdir -p $mysqldata
#创建php目录 存放php.ini php-fpm.conf php-fpm.d(配置文件) phplog(存放日志)
phpconf="php"
mkdir -p $phpconf
#创建nginx配置目录
nginxconf="nginx/conf"
#nginx 日志目录
nginxlog="nginx/logs"
#nginx 其他目录根据情况创建
#例如cert 存放证书
nginxcert="nginx/cert'
mkdir $nginxconf
mkdir $ngxinlog
mkdir $nginxcert
#为了省事,给跟目录充分的权限
chmod -R 777 $wwwroot
chmod -R 777 $basedir
echo "dir build ok!"
运行此脚本生成目录
生成目录后先运行容器,然后使用docker cp命令将容器中的配置文件拷贝出来(docker cp 容器名:/容器中配置文件完整路径 本地创建的配置文件路径)
将容器中的默认配置文件copy出来
#docker run -d --name=php php:fpm //启动php容器
#docker cp php:/usr/local/etc/php/php.ini-production /lnmp/php/php.ini
#docker cp php:/usr/local/etc/php-fpm.d /lnmp/php/
#docker cp php:/usr/local/etc/php-fpm.conf /lnmp/php/
copy完成文件后停止并删除容器
#docker stop php
#docker rm php
。。。
。。。
。。。
同理 去copy mysql nginx 的配置文件
注意mysql容器启动需要提供一个环境变量(这里的root为root账户的密码)
#docker run -d --name=mysql -e MYSQL_ROOT_PASSWORD=root mysql
#docker cp mysql:/var/lib/mysql /lnmp/
#docker cp mysql:/etc/mysql/my.cnf /lnmp/mysql/conf
#docker stop mysql
然后编写docker-compose.yml文件
version: '3'
services:
php:
container_name: php
image: php:fpm
volumes:
- /wwwroot:/www
- /lnmp/php/php.ini:/usr/local/etc/php/php.ini
- /lnmp/php/php-fpm.conf:/usr/local/etc/php-fpm.conf
- /lnmp/php/php-fpm.d:/usr/local/etc/php-fpm.d
mysql:
container_name: mysql
image: mysql:latest
volumes:
- /lnmp/mysql/data:/var/lib/mysql
- /lnmp/mysql/conf/my.cnf:/etc/mysql/my.cnf
ports:
- '3306:3306'
environment:
- MYSQL_ROOT_PASSWORD=root
nginx:
container_name: nginx
image: nginx:latest
volumes:
- /wwwroot:/www
- /lnmp/nginx/conf/conf.d:/etc/nginx/conf.d
- /lnmp/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /lnmp/nginx/logs:/var/log/nginx
- /lnmp/nginx/cert:/var/cert
- /lnmp/nginx/conf/fastcgi_params:/etc/nginx/fastcgi_params
links:
- 'php:php-fpm'
ports:
- '443:443'
- '80:80'
进入docker-compose.yml所在的文件夹,启动容器
docker-compose up -d
最后修改nginx配置文件是php文件可以被解析
...
...
...
#主要修改如下部分
location ~ \.php$ {
#此出/www 是你映射到容器中的网站跟目录等价于wwwroot
root /www/;
#这里使用php-fpm的原因是,docker-compose.yml中links了php容器并且为php容器设置了一个别名php-fpm
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;
include /etc/nginx/fastcgi_params; # 此处建议使用绝对路径
}
...
...
...
至此lnmp搭建完成,大家还想使用docker 搭建什么环境,留言告诉我,我给你们出教程