搭建 LNMP
使用多个镜像构建
1.拉取 nginx,mysql,php 的镜像文件
docker pull nginx:1.17
docker pull mysql:5.6
docker pull php:7.4-fpm
2.创建 docker 网络
docker network create lnmp_network
3.构建 mysql 容器
docker run -itd \
--name lnmp_mysql \
-p 3306:3306 \
--network lnmp_network \
--mount type=volume,source=mysql-vol,target=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6 \
--character-set-server=utf8
2
3
4
5
6
7
8
4.创建数据库
docker exec lnmp_mysql mysql -uroot -p"123456" -e "create database jpress"
5.创建 PHP 环境容器
docker run -d \
--name lnmp_php \
--network lnmp_network \
-v /app/wwwroot:/var/www/html \
php:7.4-fpm
2
3
4
5
6.创建 Nginx 容器
docker run -d \
--name lnmp_nginx \
--net lnmp_network \
-p 88:80 \
-v /app/wwwroot:/var/www/html \
nginx:1.17
2
3
4
5
6
7.修改 Nginx 的配置文件,将 php 信息的请求交给 fpm 处理
进入容器修改 php-fpm 的监听为所有主机,或者是提前绑定数据卷
docker exec -it lnmp_php /bin/bash
sed -i 's/^listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/' /usr/local/etc/php-fpm.d/www.conf
docker exec -it lnmp_nginx /bin/bash
修改 nginx 配置
default.conf
server {
listen 80;
server_name _;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass lnmp_php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
8.重启容器
docker restart lnmp_nginx
docker restart lnmp_php
9.新建 php 文件测试:<?php echo phpinfo(); ?>,正常访问 php
echo "<?php echo phpinfo(); ?>" /app/wwwroot/index.php

使用一个镜像构建
winstonpro/lnmp
docker run -itd -v /app/www/html:/home/wwwroot/default -p 88:80 --name lnmp winstonpro/lnmp
echo "<?php echo phpinfo(); ?>" > /app/www/html/index.php
