目录
环境要求:nginx 1.21.5+ php7.4 + mysql 5.7
镜像拉取
docker pull nginx:1.21.5
docker pull mysql:5.7.36
docker pull php:7.4-fpm
启动php
先启动php容器,后续启动nginx容器会使用 php容器
-
启动容器
# 常规端口方式
docker run -d --name php-fpm \
-p 9000:9000 \
-v /home/data/project:/var/www/html \ # 项目目录映射
-v /server/php:/usr/local/etc/php \
-v /home/data/log/php-fpm:/data/php-fpm/log \ # 日志目录映射
php:7.4-fpm
# 使用unix:sock 方式链接
docker run --name php-fpm \
-v /home/data/docker/php-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf \
-v /home/data/docker/php-fpm/php-fpm.conf:/usr/local/etc/php-fpm.conf \
-v /home/data/docker/php-fpm/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf \
# sock挂载目录,用于后续nginx配置php(fastcgi_pass)
-v /home/sock:/sock \
-v /home/data/project:/var/www/html \
-d php:7.4-fpm
启动nginx容器
-
准备nginx配置
server {
listen 80;
server_name xxxxx.com;
root /usr/share/nginx/html;
charset utf-8;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_index index.php;
# 使用php和nginx的sock挂载目录
fastcgi_pass unix:/sock/php-fpm.sock;
# 必须和php-fpm容器的挂载目录一直
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
-
启动容器
docker run -d --name nginx \
-p 80:80 -p 443:443 \
# 必须和php容器的scok目录挂载一致
-v /home/sock:/sock \
-v /home/data/docker/nginx:/etc/nginx \
-v /home/data/project:/usr/share/nginx/html \
-v /home/data/log/nginx:/var/log/nginx \
--link php-fpm \ # 链接php容器,容器之间相互通信
nginx
启动msyql容器
docker run -d --name mysql \
-p 3306:3306 \
-v /home/data/docker/mysql/conf:/etc/mysql/conf.d \
-v /home/data/docker/mysql/data:/var/lib/mysql \
-v /home/data/log/mysql:/var/log/mysql/ \
-e MYSQL_ROOT_PASSWORD=chuxincms123
mysql:5.7.36
安装php扩展
php脚本文件链接mysql,需要安装对应库的扩展,安装完成过后重启容器,进入容器
cd /usr/local/etc/php
docker-php-ext-install mysqli
docker-php-ext-install mysql
docker-php-ext-install pdo pdo_mysql
docker-php-ext-install gd