用 Docker 快速部署 PHP 和 Nginx

admin 2024-01-11 111 阅读 0评论

容器化 PHP 和 Nginx 需要为每个服务创建 Docker 容器,并将它们配置为协同工作。以下是创建基本 Docker 配置所涉及的步骤,该示例基于一个简单的 PHP 应用程序。

1、创建项目结构:

首先创建具有以下结构的项目:

//projet
├── index.php
├── nginx
│   └── nginx.conf
├── Dockerfile
├── Dockerfile-nginx
└── docker-compose.yml

2. 创建 PHP 应用程序

创建一个简单的 PHP 应用程序。例如,在根目录中创建一个名为 index.php 的文件:

<?php
echo "Hello!";

3. 配置 Nginx

在 nginx/nginx.conf 文件中创建 Nginx 配置文件:

server {
    listen 80;
    index index.php;
    server_name localhost;
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    error_page 404 /index.php;
    root /var/www;
    client_max_body_size 20m;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

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

4、编写 Dockerfile :

FROM php:8.0.2-fpm

WORKDIR /var/www

5、创建 Nginx Dockerfile

在项目根目录中创建 Dockerfile-nginx 文件,内容如下:

FROM nginx:1.19-alpine

WORKDIR /var/www

6、创建 .dockerignore 文件

在项目根目录中创建 .dockerignore 文件,内容如下:

docker-compose
Dockerfile*

7、编写 Docker Compose 文件

在项目根目录中创建 docker-compose.yml 文件,内容如下:

version: "3"

services:
  app:
    container_name: app-container
    build:
      context: ./
      dockerfile: ./Dockerfile
    working_dir: /var/www/
    restart: always
    volumes:
      - ./:/var/www
    networks:
      - app-network

  nginx:
    container_name: nginx-container
    build:
      context: ./
      dockerfile: ./Dockerfile-nginx
    restart: always
    ports:
      - "8000:80"
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./:/var/www
    depends_on:
      - app
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

我们创建了一个应用程序网络,以便将 PHP 和 Nginx 容器连接到同一网络。这允许它们相互通信,而不会与本地系统的网络隔离。

8、构建并运行容器

使用以下命令构建并运行容器:

docker-compose up --build

访问应用程序:

在浏览器中打开 http://localhost:8000。您应该看到消息“Hello!”。

发表评论

快捷回复: 表情:
Addoil Applause Badlaugh Bomb Coffee Fabulous Facepalm Feces Frown Heyha Insidious KeepFighting NoProb PigHead Shocked Sinistersmile Slap Social Sweat Tolaugh Watermelon Witty Wow Yeah Yellowdog
提交
评论列表 (有 0 条评论, 111人围观)