admin管理员组

文章数量:1794759

docker

docker

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