以下是LNMP与Docker结合使用的详细教程,基于主流工具和最佳实践设计:
安装Docker和Docker Compose
sudo apt update && sudo apt install docker.io docker-compose
docker --version && docker-compose --version
创建项目目录结构
mkdir lnmp-docker && cd lnmp-docker
mkdir nginx mysql php logs
编写docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:alpine
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./www:/usr/share/nginx/html
depends_on:
- php
networks:
- lnmp-net
php:
image: php:8.2-fpm-alpine
container_name: php
volumes:
- ./www:/var/www/html
- ./php/php.ini:/usr/local/etc/php/php.ini
networks:
- lnmp-net
mysql:
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: testdb
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- ./mysql/data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- lnmp-net
networks:
lnmp-net:
driver: bridge
启动服务
docker-compose up -d
docker-compose ps
Nginx配置
nginx/conf.d/default.conf
中添加PHP解析规则:location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
docker-compose restart nginx
PHP扩展安装
php/Dockerfile
:FROM php:8.2-fpm-alpine
RUN docker-php-ext-install pdo_mysql mysqli
docker build -t php-custom ./php
然后在docker-compose.yml
中引用php-custom
镜像。MySQL数据持久化
volumes
将宿主机目录挂载到容器数据目录,确保数据不丢失:volumes:
- ./mysql/data:/var/lib/mysql
部署PHP项目
www
目录,确保包含index.php
测试文件:<?php
phpinfo();
?>
访问测试
http://宿主机IP
,若看到PHP信息页面,则配置成功。操作 | 命令 |
---|---|
启动服务 | docker-compose up -d |
停止服务 | docker-compose down |
查看日志 | docker-compose logs -f |
进入容器 | docker exec -it 容器名 bash |
重启单个服务 | docker-compose restart 服务名 |
docker-compose.yml
中修改映射端口。chmod
设置权限。通过以上步骤,可快速搭建基于Docker的LNMP环境,实现灵活部署与高效管理。