简介
官方文档中是用宝塔面板部署的,此处改成用 docker-compose.yml 启动。
启动后可以正常安装,但是访问首页显示 404,暂未解决,宝塔面板安装的就正常。
文件
构建容器前结构:
docker/
│
├── nginx/
│ └── conf/
│ └── default.conf
├── php-extension/
│ ├── idcsmart.so
│ └── ioncube_loader_lin_7.4.so
├── docker-compose.yml
├── Dockerfile
├── start.bat
└── zjmfmangerbetaV3.7.2.zip
下载idcsmart.so
和官方安装包zjmfmangerbetaV3.7.2.zip
:魔方财务系统使用方法
,下载 ionCube Loader Linux (64 bits) 解压出ioncube_loader_lin_7.4.so
。
Dockerfile
:
# 基于 PHP-FPM 7.4 镜像
FROM php:7.4-fpm
# unzip 解压,PHP 扩展 gd 依赖
RUN apt update && apt install -y unzip zlib1g-dev libjpeg-dev libpng-dev libfreetype6-dev
# 安装 fileinfo 扩展
RUN docker-php-ext-install fileinfo
# 安装 PDO_MySQL 扩展
RUN docker-php-ext-install pdo_mysql
# 安装 GD 扩展并启用 FreeType 支持
RUN docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install gd
# 安装 zip 扩展
RUN apt update && apt install -y libzip-dev && docker-php-ext-configure zip && docker-php-ext-install zip
# 配置 ionCube 和开心扩展
COPY ./php-extension/ioncube_loader_lin_7.4.so /usr/local/ioncube/ioncube_loader_lin_7.4.so
COPY ./php-extension/idcsmart.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/idcsmart.so
# RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
# && echo 'zend_extension=/usr/local/ioncube/ioncube_loader_lin_7.4.so' >> /usr/local/etc/php/php.ini \
# && echo 'extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/idcsmart.so' >> /usr/local/etc/php/php.ini
# PHP 开放端口
RUN sed -i 's/listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/' /usr/local/etc/php-fpm.d/www.conf
# 安装魔方财务
COPY zjmfmangerbetaV3.7.2.zip /tmp/zjmfmangerbetaV3.7.2.zip
RUN unzip /tmp/zjmfmangerbetaV3.7.2.zip -d /var/www/html
# 设置工作目录权限
WORKDIR /var/www/html
RUN chmod -R 777 /var/www/html
# 启动 PHP-FPM
CMD ["php-fpm", "-F"]
nginx/conf/default.conf
server {
listen 80;
server_name localhost;
index index.php index.html index.htm default.php default.htm default.html;
root /var/www/html/public;
#CERT-APPLY-CHECK--START
# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
#include /www/server/panel/vhost/nginx/well-known/192.168.200.129.conf;
#CERT-APPLY-CHECK--END
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
#include enable-php-74.conf;
location ~ [^/]\.php(/|$) {
try_files $uri =404;
#fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
#include fastcgi.conf;
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_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
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_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
#include pathinfo.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
#include /www/server/panel/vhost/rewrite/192.168.200.129.conf;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known {
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$ {
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
#access_log /www/wwwlogs/192.168.200.129.log;
#error_log /www/wwwlogs/192.168.200.129.error.log;
}
新建自定义网络:
docker network create my
docker-compose.yml
:
name: mofang-caiwu
networks:
default:
external: true
name: my
services:
nginx:
image: nginx:latest
restart: always
container_name: mofang-caiwu-nginx
ports:
- "7693:80"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./html:/var/www/html
php-fpm:
image: mofang-caiwu-php:3.7.2
restart: always
container_name: mofang-caiwu-php
expose:
- "9000"
mysql:
image: mysql:5.6
restart: always
container_name: mofang-caiwu-mysql
ports:
- "10999:3306"
expose:
- "3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
environment:
MYSQL_ROOT_PASSWORD: 123
MYSQL_DATABASE: zjmfmanger
MYSQL_USER: zjmfmanger
MYSQL_PASSWORD: 123
start.bat
@echo off
REM 使用 Dockerfile 构建镜像
docker build -t mofang-caiwu-php:3.7.2 .
REM 等待 1 秒
timeout /t 1 >nul
REM 编排
docker-compose up -d
pause
评论区