在 Docker 中部署 WordPress

WordPress 提供了 Dockers Image,我们可以通过 Docker 的方式进行部署。由于同一台机器上部署了多个 Web 站点都需要使用 80/443 端口,所以使用 Nginx 通过域名判断并反向代理。

部署 WordPress

WordPress 的 Docker Image:https://hub.docker.com/_/wordpress

新建一个目录,参照 READEME 页面的 docker-compose 配置我们自己的 docker-compose.yml 配置文件:

通过 volumes 映射数据目录进行持久化存储,Docker 网络为 bridge 模式。

执行 sudo docker-compose up -d 后会自动创建一个 “目录名_default” 的网络,这里记住这个 network 我们在 Nginx 的 docker 配置中将会用到。

version: '3.1'

services:
  wordpress:
    image: wordpress:latest
    restart: always
    depends_on:
      - db
    volumes:
      - ./wp_data:/var/www/html
    networks:
      - default
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_USER: wordpress
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
    volumes:
      - ./db_data:/var/lib/mysql
    networks:
      - default

networks:
    default:
      driver: bridge



部署 Nginx

为 Nginx 新建一个目录,docker-compose.yml 配置如下:

分别映射 content 和 conf 目录到容器中,并配置 80 和 443 端口,网络使用已存在的 “wordpress_defalut”,这样 Nginx 和 WordPress 就在同一个 Docker Network 下了。

version: '3.1'

services: 
  nginx:
    image: nginx
    volumes:
      - ./content:/var/content
      - ./conf:/etc/nginx
    ports:
      - "80:80"
      - "443:443"
    networks:
      - default

networks:
  default:
    external:
      name: wordpress_default

编辑 Nginx 的配置文件 nginx/conf/conf.d/default.conf 将通过 waynegong.cn 访问 80 端口的请求转发到 WordPress 的 Docker 容器中:

server {
  listen	80;
  server_name   waynegong.cn;

  location / {
    proxy_set_header Upgrade              $http_upgrade;
    proxy_set_header Connection           "upgrade";
    proxy_set_header Host                 $host;
    proxy_set_header X-Real-IP            $remote_addr;
    proxy_set_header X-Forwarded-For      $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto    $scheme;
    proxy_set_header X-Forwarded-Host     $host;
    proxy_set_header X-Forwarded-Port     $server_port;

    proxy_pass http://wordpress;
  }
}

启动容器,这时通过 http://waynegong.cn 即可访问了。

发表评论

邮箱地址不会被公开。 必填项已用*标注