一般我们使用wordpress的镜像大部分都是apache的,在docker hub官网是没有nginx的wordpress镜像,除非是别人自己打的,相信大家也不想用apache搭建wordpress站点,我就是其中之一,主要是我的nginx不光要代理wordpress还要代理其他服务,所以就经过研究终于找到了一个完美的解决方案,在这里分享出来。
一、用docker部署好wordpress-php-fpm容器
- 因为有nginx,wordpress要互相通信,所以我们创建一个桥接网卡
docker network create apg-net
- 编写wordpress-php-fpm的部署文件,关于wordpress的版本和php版本可以自己选择,
文件中的映射目录在配置nginx的时候会创建
version: '3' networks: apg-net: external: true services: wordpress-php-fpm: image: wordpress:5.2.3-php7.1-fpm-alpine hostname: wordpress-php-fpm container_name: wordpress-php-fpm restart: always volumes: - /home/docker/nginx/www/wordpress:/var/www/html environment: LANG: C.UTF-8 WORDPRESS_DB_HOST: mysql:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: 你的数据库密码 WORDPRESS_DB_NAME: wordpress networks: - apg-net
- 完成以上配置后,执行以下命令启动此容器,此命令要在当前文件所在目录执行
docker-compose up -d
二、继续用docker部署好nginx容器
- 我一般在home目录下会创建一个docker的目录,在此目录下创建一个nginx目录和其他目录
cd /home mkdir nginx cd nginx mkdir conf logs www
- 在conf目录中编写nginx的配置文件,当他们都在同一个网络下的时候,就可以用hostname互相访问了
vi default.conf //写入以下内容 server { listen 80; server_name 你的域名; root /www/wordpress; index index.php; location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$query_string; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /var/www/html; fastcgi_pass wordpress-php-fpm:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
- 进入www目录,创建wordpress目录,将下载的wordpress代码放入其中,如果已经是pache的站像换nginx,直接把var/www/html里面的所有文件拷贝到此目录即可
cd www mkdir wordpress wget https://wordpress.org/wordpress-5.3.2.tar.gz tar -zxvf *
- 再到nginx根目录,创建nginx服务编排文件
version: '3' networks: apg-net: external: true services: nginx: image: nginx:1.19.0 restart: always container_name: nginx hostname: nginx volumes: - "./www:/www" - "./conf:/etc/nginx/conf.d" - "./logs:/var/log/nginx" ports: - "80:80" - "443:443" networks: - apg-net
- 执行以下命令,启动nginx
docker-compose up -d
三、输入你的域名访问站点即可
以上就是将apache换成nginx的全部过程,对于不是wordpress的也同样适用,只要把fpm换成官方的php-fpm镜像就可以了