docker 部署 php服务。

将nginx和php-fpm 打包到一个镜像中。

1。 DockerFile 文件

# 使用官方 PHP FPM 镜像作为基础镜像
FROM php:7.4-fpm

# 更新 APT 包源
RUN sed -i 's|deb.*stretch|deb http://mirrors.aliyun.com/debian stretch main contrib non-free|g' /etc/apt/sources.list && \
    sed -i 's|deb.*stretch-updates|deb http://mirrors.aliyun.com/debian stretch-updates main contrib non-free|g' /etc/apt/sources.list && \
    sed -i 's|deb.*stretch-backports|deb http://mirrors.aliyun.com/debian stretch-backports main contrib non-free|g' /etc/apt/sources.list && \
    sed -i 's|deb.*stretch-security|deb http://mirrors.aliyun.com/debian stretch-security main contrib non-free|g' /etc/apt/sources.list

# 更新 apt 包源
RUN apt-get update && apt-get install -y \
    nginx \
    zip unzip \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    && docker-php-ext-install gd

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


# 复制项目文件
COPY . .

RUN chmod +x ./start.sh

# 配置 Nginx
COPY ./conf/default.conf /etc/nginx/conf.d/default.conf

# 暴露端口
EXPOSE 80

# 启动 Nginx 和 PHP-FPM
CMD ["./start.sh"]

2。 启动文件start.sh

#!/bin/sh
php-fpm &
nginx -g "daemon off;"

3。 对应的nginx配置


server {
    listen       80;
    server_name  localhost;

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        root   /var/www/html;
        include snippets/fastcgi-php.conf;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4。 文档结构如下:

├── Dockerfile
├── conf
│   └── default.conf
├── index.php
└── start.sh

5。 构建和运行docker容器命令

在项目更目录下(Dockerfile),执行以下命令构建镜像:
 docker build -f ./Dockerfile -t test-php:1.0.0 .

构建成功后需要运行容器,执行如下命令:
docker run --name=php-server -p 80:80 -v /Users/wangxu11/DockerData/php/code:/var/www/html -d test-php:1.0.0
重点说明: 端口需要和nginx中端口一致,如80 ,nginx->server->port 80;

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注