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
发布评论