docker 安装 php+nginx+mysql+phpmyadmin 并运行

本文介绍了如何使用Docker安装和运行PHP、Nginx、MySQL以及phpMyAdmin。通过端口映射和数据卷挂载,实现项目目录与容器的交互。在配置过程中,需要注意Nginx的fastcgi_pass设置为PHP容器的IP,以及phpMyAdmin连接MySQL时使用宿主机IP。通过这一系列步骤,可以在本地便捷地搭建一个完整的Web开发环境。
  1. docker 安装 php
    docker search php
    docker pull php:5.6-fpm
    docker run -d --name php5.6 -v ~/docker/nginx/www:/www php:5.6-fpm

    命令说明:先搜索 php 镜像再根据需要的版本进行下载,并运行。
    --name php5.6: 将运行的容器起别名为 php5.6,方便管理。
    -v ~/docker/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www

  2. docker 安装 nginx
    创建 ~/docker/nginx/conf/conf.d 目录。-p 表示允许一次创建多个目录,而不用挨个目录创建一遍。
    mkdir -p ~/docker/nginx/conf/conf.d
    docker search nginx
    docker pull nginx:latest
    docker run -d --name nginx \
    -v ~/docker/nginx/www:/usr/share/nginx/html:ro \
    -v ~/docker/nginx/conf/conf.d:/etc/nginx/conf.d:ro  \
    -p 8088:80 \
    --link php5.6:php \
    nginx

    -p 8088:80: 端口映射,把 nginx 中的 80 映射到本地的 8088 端口。

    ~/docker/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。

    ~/docker/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
    ro 表示只读。
    --link php5.6:php: 把&n

<think>我们参考了站内已有的引用,特别是引用[1]中提到了nginxphp环境的docker部署。用户现在需要的是在docker安装nginxPHP8的详细步骤。由于引用[1]已经提供了部署nginxphp环境的步骤,我们将在此基础上进行扩展,针对PHP8进行适配。 步骤概述: 1. 部署php-fpm容器(使用PHP8镜像) 2. 部署nginx容器 3. 配置nginx连接php-fpm 4. 测试 详细步骤: ### 1. 部署php-fpm容器(PHP8) 首先,我们需要拉取PHP8的fpm镜像,创建容器。同时,我们需要挂载本地目录以便于管理代码和配置。 #### 准备php-fpm挂载文件 在宿主机上创建目录用于存放php代码和配置文件: ```bash mkdir -p ~/docker-nginx-php/php/www ~/docker-nginx-php/php/conf ``` #### 创建php-fpm容器 使用以下命令启动php-fpm容器(这里使用php:8.0-fpm镜像,也可以根据需要选择其他版本,如php:8.1-fpm等): ```bash docker run -d --name myphpfpm \ -v ~/docker-nginx-php/php/www:/var/www/html \ # 挂载网站代码目录 -v ~/docker-nginx-php/php/conf:/usr/local/etc/php \ # 挂载配置文件目录(可选,如果需要自定义php.ini等) --restart=always \ php:8.0-fpm ``` ### 2. 部署nginx容器 接下来,部署nginx容器,配置其与php-fpm容器连接。 #### 准备nginx配置及网页文件 在宿主机上创建nginx配置目录和网页根目录: ```bash mkdir -p ~/docker-nginx-php/nginx/conf.d ~/docker-nginx-php/nginx/logs ~/docker-nginx-php/nginx/html ``` 在`~/docker-nginx-php/nginx/conf.d`目录下创建配置文件`default.conf`,内容如下: ```nginx server { listen 80; server_name localhost; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass myphpfpm:9000; # 这里使用php-fpm容器的名字,因为两个容器将在一个网络中 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` #### 创建nginx容器 启动nginx容器,挂载配置和网页目录。注意,这里需要将nginx容器与php-fpm容器连接到同一个网络,或者使用`--link`参数(推荐使用自定义网络)。 首先,创建一个自定义网络(如果还未创建): ```bash docker network create nginx-php-network ``` 然后,将php-fpm容器连接到该网络(如果之前创建php-fpm容器时没有指定网络,可以先停止容器,再重新创建加入网络,或者使用`docker network connect`命令): ```bash docker network connect nginx-php-network myphpfpm ``` 接下来,启动nginx容器加入同一网络: ```bash docker run -d --name mynginx \ -p 80:80 \ -v ~/docker-nginx-php/nginx/html:/var/www/html \ # 挂载网页文件目录(也可以与php-fpm共享同一个目录,这里为了分开管理) -v ~/docker-nginx-php/nginx/conf.d:/etc/nginx/conf.d \ # 挂载配置文件目录 -v ~/docker-nginx-php/nginx/logs:/var/log/nginx \ # 挂载日志目录 --network nginx-php-network \ # 加入同一个网络 --restart=always \ nginx ``` 注意:这里我们挂载了两个不同的目录到`/var/www/html`(nginx容器和php-fpm容器分别挂载了宿主机上不同的目录)。为了确保一致性,我们可以将nginx容器和php-fpm容器的网站根目录挂载到宿主机的同一个目录(例如,都挂载到`~/docker-nginx-php/www`)。这样修改一处即可。 因此,我们可以调整: - 创建共享目录:`mkdir -p ~/docker-nginx-php/www` - 修改php-fpm容器的挂载:将其中的`~/docker-nginx-php/php/www`改为`~/docker-nginx-php/www` - 修改nginx容器的挂载:将其中的`~/docker-nginx-php/nginx/html`改为`~/docker-nginx-php/www` ### 3. 测试 在上述步骤完成后,我们在共享目录`~/docker-nginx-php/www`中创建一个`index.php`文件: ```php <?php phpinfo(); ?> ``` 然后在浏览器中访问`http://localhost`,应该可以看到PHP信息页面,其中显示PHP版本为8.0。 ### 4. 配置mysqlphpmyadmin(可选) 引用[1]中提到了继续配置mysqlphpmyadmin。如果需要,可以按照类似方式部署mysql容器,php-fpm容器中安装mysql扩展(如果镜像中没有的话),然后配置连接。 ### 注意事项: 1. 确保宿主机的端口80没有被占用。 2. 如果使用自定义网络,容器之间可以通过容器名互相访问(如nginx容器中配置的`fastcgi_pass myphpfpm:9000;`)。 §§相关问题§§ 1. 如何自定义PHP的配置(如上传文件大小限制)? 2. 如何让多个nginx容器共享同一个php-fpm容器? 3. 如何在Docker中部署MySQLPHP连接? </think>### 在 Docker 中部署 NginxPHP8 的详细步骤 #### 1. **准备 PHP-FPM 容器** ```bash # 拉取 PHP8-fpm 官方镜像 docker pull php:8-fpm # 创建 PHP 配置文件目录(宿主机) mkdir -p ~/docker-nginx-php/php/conf # 启动 PHP-FPM 容器(挂载配置和代码目录) docker run -d --name php8-fpm \ -v ~/docker-nginx-php/www:/var/www/html \ # 挂载网站代码 -v ~/docker-nginx-php/php/conf:/usr/local/etc/php \ # 挂载 PHP 配置 --restart=always \ php:8-fpm ``` #### 2. **准备 Nginx 容器** ```bash # 拉取 Nginx 官方镜像 docker pull nginx:latest # 创建 Nginx 配置目录(宿主机) mkdir -p ~/docker-nginx-php/nginx/conf.d # 创建 Nginx 配置文件 echo 'server { listen 80; root /var/www/html; index index.php index.html; location ~ \.php$ { fastcgi_pass php8-fpm:9000; # 指向 PHP 容器 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }' > ~/docker-nginx-php/nginx/conf.d/default.conf # 创建测试文件 echo "<?php phpinfo(); ?>" > ~/docker-nginx-php/www/index.php ``` #### 3. **启动 Nginx 容器** ```bash docker run -d --name nginx \ -p 80:80 \ # 暴露端口 -v ~/docker-nginx-php/www:/var/www/html \ # 代码目录(与 PHP 共享) -v ~/docker-nginx-php/nginx/conf.d:/etc/nginx/conf.d \ # 挂载配置 --link php8-fpm \ # 连接 PHP 容器 --restart=always \ nginx ``` #### 4. **验证部署** 1. 访问 `http://localhost` 2. 应显示 PHP8 信息页面(包含 PHP Version 8.x.x) 3. 检查容器状态: ```bash docker ps -a --filter "name=php8-fpm|nginx" ``` #### 关键配置说明 1. **目录共享** NginxPHP 容器通过 `-v ~/docker-nginx-php/www:/var/www/html` 共享代码目录[^1][^4] 2. **网络连接** `--link php8-fpm` 使 Nginx 能解析 PHP 容器的服务名[^1] 3. **PHP 处理配置** Nginx 的 `fastcgi_pass php8-fpm:9000` 将 PHP 请求转发到 PHP-FPM 容器[^1][^3] #### 常见问题排查 ```bash # 查看 Nginx 日志 docker logs nginx # 进入 PHP 容器检查 docker exec -it php8-fpm php -v # 测试 PHP 文件解析 curl http://localhost/index.php ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值