LNMP(Linux + Nginx + MySQL + PHP)是一种常见的Web服务器环境组合。使用Docker可以轻松搭建和管理LNMP环境。以下是调用Docker LNMP环境的详细方法:
最简单的方法是使用现有的LNMP Docker镜像:
# 拉取LNMP镜像(以其中一个流行镜像为例)
docker pull richarvey/nginx-php-fpm
# 运行容器
docker run -d --name my_lnmp -p 80:80 -p 443:443 -p 3306:3306 -v /path/to/your/web:/var/www/html richarvey/nginx-php-fpm
更推荐的方式是使用docker-compose管理多个容器:
docker-compose.yml
文件:version: '3'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./sites:/etc/nginx/sites-enabled
- ./www:/var/www/html
depends_on:
- php
- mysql
php:
image: php:7.4-fpm
volumes:
- ./www:/var/www/html
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database
MYSQL_USER: your_user
MYSQL_PASSWORD: your_password
volumes:
- ./mysql-data:/var/lib/mysql
docker-compose up -d
在项目目录下创建nginx.conf
和站点配置文件:
# nginx.conf 示例
user nginx;
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
可以通过创建自定义Dockerfile来扩展PHP镜像:
FROM php:7.4-fpm
RUN docker-php-ext-install pdo pdo_mysql
RUN pecl install redis && docker-php-ext-enable redis
然后在docker-compose.yml中引用:
php:
build: .
volumes:
- ./www:/var/www/html
docker-compose up -d
docker-compose down
docker-compose logs
docker exec -it container_name bash
docker-compose restart service_name
将你的PHP项目文件放入www
目录,Nginx会自动提供服务。确保Nginx配置正确指向你的项目入口文件。
在PHP代码中连接MySQL时,使用以下配置:
- 主机名:mysql
(docker-compose中的服务名)
- 用户名/密码:docker-compose.yml中设置的
$db = new PDO('mysql:host=mysql;dbname=your_database', 'your_user', 'your_password');
通过以上方法,你可以轻松调用和管理Docker LNMP环境,实现快速开发和部署。