Docker部署PHP+Nginx、MySQL

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,显示如下:

phpinfo图片

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 

完成。

如有帮助,请点赞

猜你喜欢

转载自blog.csdn.net/dmedaa/article/details/107993316