侧边栏壁纸
  • 累计撰写 92 篇文章
  • 累计创建 42 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

智简魔方财务系统开心版 docker compose 一键启动

勤为径苦作舟
2025-01-20 / 0 评论 / 0 点赞 / 9 阅读 / 0 字

简介

官方文档中是用宝塔面板部署的,此处改成用 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

参考

0

评论区