«

一键构建Discuz!的docker( nginx+php+redis+mysql)运行环境

时间:2025-1-2 16:17     作者:Anglei     分类: WEB应用


Discuz!在Docker中部署包含PHP 7.4、Nginx 1.26、Mysql8.0、Redis的应用通常涉及以下几个步骤:编写Dockerfile、创建docker-compose.yml文件来定义服务和网络,然后构建和运行容器。以下是一个详细的步骤指南

1.创建项目目录结构

首先,创建一个项目目录,并在其中创建必要的文件。例如:

my-docker-project/
├── docker-compose.yml
├── Dockerfile
├── nginx
    └── default.conf
    └── fastcgi-php.conf
├── mysql-data
└── www/
    └── index.php

2.编写Dockerfile(用于PHP)

在项目目录下创建Dockerfile,内容如下:

FROM php:7.4-fpm

RUN apt-get update && apt-get install -y \
    libzip-dev zip unzip libpng-dev \
    && docker-php-ext-install pdo pdo_mysql zip exif mysqli gd \
    && docker-php-ext-enable opcache
RUN pecl install redis \
    && docker-php-ext-enable redis

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

COPY ./www /var/www/html

3.配置Nginx

在nginx/目录下创建default.conf,内容如下:

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$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

在nginx/目录下创建fastcgi-php.conf,内容如下:

# fastcgi-php.conf

fastcgi_index index.php;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_ADDR $server_addr;

4.创建docker-compose.yml文件

在项目根目录下创建docker-compose.yml文件,注意修改mysql的密码,内容如下,3.8版本如果无法执行,就换为3.3:

version: '3.8'

services:
  nginx:
    image: nginx:1.26
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./nginx/fastcgi-php.conf:/etc/nginx/snippets/fastcgi-php.conf
      - ./www:/var/www/html
    networks:
      - app-network
    depends_on:
      - php
      - redis

  php:
    build: .
    container_name: php
    volumes:
      - ./www:/var/www/html
    networks:
      - app-network

  redis:
    image: redis:latest
    container_name: redis
    networks:
      - app-network

  mysql:
    image: mysql:8.0
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
      MYSQL_DATABASE: discuz
      MYSQL_USER: discuz
      MYSQL_PASSWORD: yourpassword
    volumes:
      - ./mysql-data:/var/lib/mysql
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

5.准备PHP测试代码

在www/目录下创建一个简单的index.php文件,用于测试连接:

<?php
phpinfo();

// 测试Redis连接
$redis = new Redis();
$redis->connect('redis', 6379);
$redis->set("foo", "bar");
echo "Redis connected, foo: " . $redis->get("foo");
?>

6.构建和运行Docker容器

在项目根目录下运行以下命令来构建和运行Docker容器:

docker-compose up --build -d

后期如果不需要重新构建应用组件,则可以去除 --build

7.访问测试

打开浏览器,访问http://youripaddress:8080 ,你应该能看到PHP的信息页面,并且页面底部会显示Redis连接成功的信息。

8.应用部署

将discuz网页从官网(https://www.discuz.vip/download) 下载下来,然后将Upload里面的程序全部拷贝到www目录下就可以了。

9.redis缓存验证:

本文完结,相关标签: docker redis discuz

版权所有:Anglei
文章标题:一键构建Discuz!的docker( nginx+php+redis+mysql)运行环境
除非注明,本站文章均为 MAXADA社区知识库 原创,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(6)

鲜花(1)

鸡蛋(0)
分享到: