2.docker使用:将 PHP 项目与 Nginx + PHP-FPM 环境一起打包为一个 自定义 Docker 镜像

有这些操作如下操作:
本地构建
推送至私有仓库
在其他服务器上一键运行
https://hub.docker.com/

1.目录结构:

myphpapp/
├── www/                  # 存放你的 PHP 源码
│   └── index.php
├── conf/
│   └── nginx.conf        # 自定义 Nginx 配置文件
├── php/
│   └── Dockerfile        # 构建自定义 PHP 镜像
├── nginx/
│   └── Dockerfile        # 构建自定义 Nginx 镜像(可选)
└── docker-compose.yml    # 定义服务编排

myphpapp这个目录放哪里呢?我之前也疑惑,可以在home目录进行创建,不放在/etc/docker中哟!!!
这里使用命令创建对应的文件夹

mkdir myphpapp/www
mkdir myphpapp/conf
mkdir myphpapp/php
mkdir myphpapp/nginx
nano docker-compose.yml

2.创建自定义 PHP 镜像,文件路径:php/Dockerfile

FROM php:8.2-fpm

# 设置工作目录
WORKDIR /var/www/html

# 复制 PHP 代码到容器中
COPY ../../www /var/www/html

# 可选:安装额外扩展
RUN docker-php-ext-install pdo pdo_mysql

构建 PHP 镜像:

cd php
docker build -t mycompany/php-app:1.0 .

这里就遇到挺多的问题,我创建了文件,但是运行的时候一直提示我没有文件,之后就改了一种方式,在myphpapp这个目录下运行命令:
在这里插入图片描述
这里是在上一步php之后操作的(结果还是出现问题,心塞了,之前没没有氪金一直未请求到docker服务器,只得重新想方法):

cd ../
docker build -t mycompany/php-app:1.0 -f php/Dockerfile .

在这里插入图片描述
之前用过了加速器,也没有变动,找了另外的方案:
A:手动拉取基础镜像(可惜失败了)

docker pull php:8.2-fpm

B:更换为国内可用的基础镜像(都不行)
在这里插入图片描述
后面查看到一个文档中提及到docker镜像中php的版本,我想是不是除了网它没有这个版本,就用命令查看了下:

docker search php

好家伙,这里我其实还是报错,请求不到,我就直接修改了下,之前是php8.2我修改为了php8.1可以了,可以了,可以了,开心,下一步,记录日是:2025-6-9,之后就不知道这个版本是否能用,还是需要先查看有哪些php镜像可以用,我就是瞎猫碰上耗子,哈哈哈
在这里插入图片描述
3.适用于 PHP 的 Nginx 配置示例
文件路径:conf/nginx.conf

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location ~ /\.ht {
        deny all;
    }
}

4.创建自定义 Nginx 镜像(可选)
文件路径:nginx/Dockerfile

FROM nginx:latest

# 替换默认配置文件
COPY ../../conf/nginx.conf /etc/nginx/conf.d/default.conf

构建 Nginx 镜像:

docker build -t mycompany/nginx-proxy:1.0 -f nginx/Dockerfile .

在这里插入图片描述
这步挺简单的,很快就能弄好结束,下一步

5.修改 docker-compose.yml 使用自定义镜像(这里需要注意格式一定要一摸一样,可以一行一行复制)

version: '3'
services:
  php:
    image: mycompany/php-app:1.0   # 使用你构建的自定义 PHP 镜像
    container_name: php-app
    ports:
      - "9000:9000"

  nginx:
    image: mycompany/nginx-proxy:1.0  # 使用你构建的自定义 Nginx 镜像
    container_name: nginx-proxy
    ports:
      - "80:80"
    depends_on:
      - php

6.构建并启动服务(没有安装docker-compose,一定要记得呀,不然跳出提示还是需要装:sudo apt install docker-compose)

docker compose up -d --build

在这里插入图片描述

访问:http://服务器IP 你应该看到你的 PHP 页面。
在这里插入图片描述
我这里访问失败,nginx是错误的,需要去检查
这里修改了配置文件,然后删除容器,重新生成nginx镜像:

docker-compose down
docker build -t mycompany/nginx-proxy:1.0 -f nginx/Dockerfile . 

这里是修改了配置文件,如果不清楚的小伙伴可以看看我之前贴的代码,和这个不一样的在这里插入图片描述 在这里插入图片描述
成功了!!!!开心,开心,开心😄在这里插入图片描述

删除docker镜像中用的命令
手动删除
docker rmi d4ecb40745b2
自动删除
docker image prune -a
在这里插入图片描述
所有的内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值