有这些操作如下操作:
本地构建
推送至私有仓库
在其他服务器上一键运行
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
所有的内容: