LNMP(Linux + Nginx + MySQL + PHP)是一种常见的Web服务器环境组合,使用Docker可以轻松搭建和管理LNMP环境。以下是使用Docker和Docker Compose部署LNMP环境的详细步骤:
docker pull nginx:alpine
docker pull php:7-fpm-alpine
docker pull mysql:5.7
使用以下命令启动Nginx、PHP-FPM和MySQL容器:
docker run --rm -d -p 80:80 --name=nginx nginx:alpine
docker run --rm -d -p 9000:9000 --name=php-fpm php:7-fpm-alpine
docker run --rm -d -p 3306:3306 --name=mysql mysql:5.7
创建一个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.yml
文件的目录下运行以下命令启动服务:
docker-compose up -d
在项目目录下创建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时,使用以下配置:
$db = new PDO('mysql:host=mysql;dbname=your_database', 'your_user', 'your_password');
.env
文件管理敏感信息。通过以上步骤,你可以轻松调用和管理Docker LNMP环境,实现快速开发和部署。