2

我正在使用以下堆栈在 docker 上设置一个简单的环境:

  • nginx作为负载均衡
  • wordpress 实例
  • mysql

我的简单 docker compose 文件如下:

nginx:
  build: ../nginx
  links:
    - wordpress:wordpress
  ports:
    - "80:80"
    - "443:443"

wordpress:
  image: wordpress
  ports:
    - "8082:80"
  links:
    - mysqlwp:mysql
  working_dir: /var/www/html
  #volumes:
  #  - wp-content/:/var/www/html/wp-content
  environment:
    WORDPRESS_DB_HOST: mysql
    WORDPRESS_DB_USER: wordpress
    WORDPRESS_DB_PASSWORD: wordpress
    WORDPRESS_DB_NAME: wordpress
mysqlwp:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: wordpress
    MYSQL_USER: wordpress
    MYSQL_PASSWORD: wordpress

nginx 是从基础镜像构建的,配置如下:

upstream wploadbalance{
        least_conn;
        server wordpress;
}

server {
       listen 80;
       server_name my.site.com;
       location / {
           proxy_pass http://wploadbalance;
    }
}

现在,当我连接到 my.site.com 时,我已正确重定向到我的 wordpress 实例,但加载了http://wploadbalance无法访问的静态文件。

例如,在我的浏览器控制台中,我看到类似的内容:

获取http://wploadbalance/wp-includes/js/wp-util.min.js?ver=4.4 网络::ERR_NAME_NOT_RESOLVED

由于wploadbalance无法从 docker 容器外部访问,因此应该通过某种方式告诉 wordpress 静态文件是从my.site.com. 有谁知道如何实现这一目标?

4

1 回答 1

0

解决方案:

  1. 登录到容器:

    docker exec -it "name_of_container" bash

  2. 将以下行添加到 wp-config.php

    define('WP_HOME', 'http://your_domain.com');

    define('WP_SITEURL', 'http://your_domain.com');

于 2016-06-07T11:01:27.517 回答