PHP+Nginx部署
搜索PHP镜像
docker search php
拉取PHP镜像
docker pull php:7.4-fpm
创建容器,设置端口映射、目录映射
docker run --name php-fpm -id \
-v ~/nginx/www:/www \
php:7.4-fpm
- --name php-fpm : 将容器命名为 php-fpm
- -v ~/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www
创建配置文件目录
mkdir ~/nginx/conf
mkdir ~/nginx/conf/conf.d
编辑配置文件
vim ~/nginx/conf/conf.d/default.conf
配置文件内容
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
- php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
- /www/: 是 php-fpm 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录。
启动容器
docker run --name php-nginx -p 80:80 -id \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link php-fpm:php \
nginx:1.19.1
- -p 80:80: 端口映射,把 nginx 中的 80 映射到本地的 80 端口。
- ~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
- ~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
- --link php-fpm:php: 把 php-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
接下来我们在 ~/nginx/www 目录下创建 index.php,代码如下:
<?php
phpinfo();
浏览器打开 http://你的ip/index.php,显示如下:
MySQL部署
搜索MySQL镜像
docker search mysql
拉取MySQL镜像
docker pull mysql:5.7
创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
启动容器
docker run -id \
-p 3306:3306 \
--name mysql \
-v ~/mysql/conf:/etc/mysql/conf.d \
-v ~/mysql/logs:/logs \
-v ~/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
- 参数说明
- -p 3306:3306:将容器的 3306 端口映射到宿主机的 3306 端口。
- -v ~/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- -v ~/mysql/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- -v ~/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
进入容器,操作MySQL
docker exec -it mysql /bin/bash
使用外部机器连接容器中的mysql
完成。
如有帮助,请点赞