一键构建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
7.访问测试
打开浏览器,访问http://youripaddress:8080 ,你应该能看到PHP的信息页面,并且页面底部会显示Redis连接成功的信息。
8.应用部署
将discuz网页从官网(https://www.discuz.vip/download) 下载下来,然后将Upload里面的程序全部拷贝到www目录下就可以了。
9.redis缓存验证:

本文完结,相关标签: docker redis discuz
推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(6) |
![]() 鲜花(1) |
![]() 鸡蛋(0) |