Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WordPress容器的反向代理_Wordpress_Nginx_Docker_Docker Compose - Fatal编程技术网

WordPress容器的反向代理

WordPress容器的反向代理,wordpress,nginx,docker,docker-compose,Wordpress,Nginx,Docker,Docker Compose,我正试图通过Docker创建一个WordPress容器。但是我在主机级别安装了NGINX、MySQL和让我们加密 因此,我的Docker Compose文件是: wordpress: image: wordpress:latest restart: always net: "host" environment: WORDPRESS_DB_HOST: 172.17.0.1:3306 WORDPRESS_DB_NAME: DB_NAME WORDP

我正试图通过Docker创建一个
WordPress
容器。但是我在
主机
级别安装了
NGINX
MySQL
让我们加密

因此,我的Docker Compose文件是:

wordpress:
  image: wordpress:latest
  restart: always
  net: "host"
  environment:
      WORDPRESS_DB_HOST: 172.17.0.1:3306
      WORDPRESS_DB_NAME: DB_NAME
      WORDPRESS_DB_USER: DB_USER
      WORDPRESS_DB_PASSWORD: DB_PASSWORD
  ports:
      - "8080:8080"
  volumes:
      - /home/ubuntu/wordpress:/var/www/html
我的NGINX配置是:

server {
    listen                                      80 443 ssl http2;

    server_name                                 domain.com www.domain.com;

    # some headers

    ssl                                         on;
    # some ssl settings

    gzip                                        on;
    # some gzip settings

    # pagespeed and let's encrypt locations

    location / {
        if ($scheme = http) {
            return 301                          https://$server_name$request_uri;
        }

        # proxy pass headers

        proxy_pass                              http://172.17.0.1:8080;
    }
}
最后,我的
ifconfig
输出是:

docker0   Link encap:Ethernet  HWaddr 02:24:ad:a2:e8:dd  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::24:adff:fea2:e8dd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:324 errors:0 dropped:0 overruns:0 frame:0
          TX packets:334 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:20589 (20.5 KB)  TX bytes:10261280 (10.2 MB)
但是当我打开
domain.com
时,我被重定向到
https://domain.com
带有
502坏网关

docker compose日志的最后一个输出:

Attaching to ubuntu_wordpress_1
wordpress_1  | (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
wordpress_1  | (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
wordpress_1  | no listening sockets available, shutting down
wordpress_1  | AH00015: Unable to open logs

所以,我想做的是通过Docker将WordPress容器化,每当有到80端口的请求时,将其重定向到Docker容器

限制:

  • 我不想对MySQL进行Dockerize,这是最后的决定
  • 我不想将NGINX Dockerize,因为我个人喜欢使用
    http2
    pagespeed
    模块从源代码构建它
      我想问题在于网络配置。您的容器为wordpress使用端口80,主机为nginx使用相同的端口。当您使用net:“host”()时,您的容器使用主机的网络堆栈,并且它们在尝试绑定到同一端口时发生冲突

      如果您的mysql服务器可以远程访问,只需删除网络:“主机”部分,并将mysql主机配置替换为您将如何远程连接到它。它应该会起作用

      如果出于任何原因无法打开mysql到远程连接,那么我想您应该创建一个用户定义的网络。也可以通过docker-compose.yml文件进行配置。()

      这对我有用

      版本:“3.1”
      服务:
      db:
      图片:mysql:5.7
      卷数:
      -./db\u数据:/var/lib/mysql
      重新启动:始终
      环境:
      MYSQL\u ROOT\u密码:somewordpress
      MYSQL_数据库:wordpress
      MYSQL\u用户:wordpress
      MYSQL_密码:wordpress
      wordpress:
      取决于:
      -分贝
      图片:wordpress:4.8.2-apache
      卷数:
      -./wordpress:/var/www/html
      -./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
      重新启动:始终
      环境:
      -虚拟主机=blog.dom.local
      -WORDPRESS\u DB\u HOST=DB:3306
      -WORDPRESS\u DB\u USER=WORDPRESS
      -WORDPRESS\u DB\u PASSWORD=WORDPRESS
      nginx代理:
      图片:jwilder/nginx代理
      端口:
      - "80:80"
      卷数:
      
      -/var/run/docker.sock:/tmp/docker.sock:ro
      让docker只听8080(您代理的端口),而不是nginx听Hello@IgorYavych的80。我在您发表评论时看到了它,并修复了它。但是,我仍然得到
      地址已经在使用中
      错误。所以,一切都没有改变。即使它在yml文件中是“8080:8080”,它也会尝试绑定到0.0.0.0:80,并且NGINX正在使用它。更改为
      8080:8080
      后,您仍然有一些
      无法绑定到地址0.0.0.0:80
      ?您尝试了
      docker-compose-down和&docker-compose-up
      ?非常感谢!我删除了
      net:“host”
      行,并更新了
      WORDPRESS\u DB\u host
      以远程连接,瞧!