docker-compose部署织梦CMS

使用docker-compose部署,可以做到一键启动,使用方便。本次部署织梦CMS使用nginx、mysql5.7、PHP5.4,其他版本可能存在兼容的问题,部署两个CMS项目,后面还能增加项目部署。PHP使用devilbox/php-fpm:5.4-prod,已经安装了平常使用的依赖,不需要再安装什么。

需要特别注意的是CMS项目的权限问题,必须开777才能正常使用

目录结构为:

.
├── conf
│   ├── nginx
│   │   ├── bonlala.conf
│   │	└── huasheng.conf
│   ├── php-custom.d
│	│	└── php.ini
│   └── php-fpm-custom.d
│		└── php-fpm.conf
├── docker-compose.yml
├── mysql
│   └── data
└── web
    ├── project-a
    └── project-b

过程如下:

# 新建一个空的目录
mkdir -p /my/dedecms
cd /my/dedecms
# 在里面创建docker-compose.yml文件
vim docker-compose.yml
# 创建一个文件夹存放织梦CMS文件
mkdir web 
# 这里将织梦CMS上传到web目录,上传后web目录下有project-a, project-b两个目录
# 修改cms目录权限,如果没有做这一步,或者权限不是777,将会导致在浏览器访问时提示“读取文件权限出错,目录文件xxx不可写!”
chmod -R 777 web/project-a
chmod -R 777 web/project-b
# 上传项目之后需要修改数据库配置,配置文件位置使用下面的命令查找
find . -name common.inc.php | grep -v include
# 只需要修改$cfg_dbname的值为指定数据库名称即可,如project-a使用project-a-cms数据库,$cfg_dbname = 'project-a-cms'
# 创建nginx配置目录
mkdir -p conf/nginx
# 里面创建a.cms.conf和b.cms.conf 这里配置nginx代理的域名,可以自己修改
vim conf/nginx/a.cms.conf
vim conf/nginx/b.cms.conf
# 创建mysql数据目录
mkdir -p mysql/data
# 启动服务
docker-compose up -d

服务启动之后,连接到php-mysql57容器,创建数据库导入数据,就可以去浏览器访问了。

docker-compose.yml:

version: "3"  
services:   
  nginx:    
     image: nginx:1.21.1  
     container_name: php-nginx
     ports:
      - "80:80"
     volumes:
      - ./web/:/usr/share/nginx/html/:rw
      - ./conf/nginx:/etc/nginx/conf.d/
     environment:
       TZ: "Asia/Shanghai"
     restart: always
     networks:
      - default
  php1:
    image: devilbox/php-fpm:5.4-prod
    container_name: php54-1
    volumes:
      - ./web/project-a/:/var/www/html/:rw
      - ./conf/php-custom.d:/etc/php-custom.d
      - ./conf/php-fpm-custom.d:/etc/php-fpm-custom.d
    environment:
      TIMEZONE: "Asia/Shanghai"
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - default

  php2:
    image: devilbox/php-fpm:5.4-prod
    container_name: php54-2
    volumes:
      - ./web/project-b/:/var/www/html/:rw
      - ./conf/php-custom.d:/etc/php-custom.d
      - ./conf/php-fpm-custom.d:/etc/php-fpm-custom.d
    environment:
      TIMEZONE: "Asia/Shanghai"
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - default

  mysql:
    image: mysql:5.7
    container_name: php-mysql57
    ports:
      - "3308:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql/:rw
    restart: always
    networks:
      - default
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      TZ: "Asia/Shanghai"
networks:   
  #创建了一个自定义的网络叫做default
  default:

a.cms.conf:

server {
    listen       80;
    server_name a.cms;

    root   /usr/share/nginx/html/project-a;	#这个目录要和CMS项目对应
    index   index.html index.htm index.php;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
        index  index.html index.htm index.php ;
        try_files $uri $uri/ /index.php?$query_string;
        autoindex  on;
    }

    location ~ ^/(images|img|js|css|)/ {
        autoindex on;
        access_log  off;
        expires     30d;
    }

    location ~* ^/(include|data|uploads|templets|special|html|erwe)/.*\.(php|php5)$ {
	deny all;
    }

    location ~ \.php$ {
        fastcgi_pass   php54-1:9000; #这里的名称php54-1要和docker-compose配置的对应
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
    }
}

更多推荐

docker-compose部署织梦CMS