nginx и wordpress разные файлы docker-compose - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь соединить несколько файлов docker-compose с одним файлом nginx docker-compose.

Например, эта установка прекрасно работает (я создал сеть перед запуском):

(потерпите меня здесь. Я знаю, что этот пример избыточен, потому что у меня есть два сервера nginx)

#static_site/docker-compose.yml
version: '3'

services:
  web:
    image: nginx:stable-alpine
    container_name: app_web_static
    volumes:
      - "./nginx.conf:/etc/nginx/conf.d/default.conf"
      - "./web:/var/www/static_web"
    ports:
      - "8080:8080"
    networks:
      - test_network

#static_site/nginx.conf
server {
    listen 8080;

    location / {
       root /var/www/static_web;
       index  index.html index.htm;
    }
}

#nginx/docker-compose.yml
server {
    listen 80;
    server_name myapp.local;

    #Docker DNS
    resolver 127.0.0.11;

    location / {
        set $docker_host "app_web_static"; 
        proxy_pass http://$docker_host:8080;
    }
}

Я запускаюконтейнеры и все работает как положено.Мой сайт прокси через myapp.local

НО.Когда я изменяю свой статический веб-сайт на изображение WordPress, например:

#wordpress/docker-composer.yml
wordpress:
    image: wordpress
    container_name: app_web
    links:
      - db:mysql
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_PASSWORD: example
    networks:
      - test_network
      - test_wordpress_db

  db:
    image: mysql:5.7
    container_name: test.web.db
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - ./mysql/data:/var/lib/mysql
    networks:
      - test_wordpress_db

, я снова запускаю контейнеры (после обновления файла nginx .yml).Я получил запрос, зарегистрированный в моем терминале (контейнер nginx, что означает, что запрос является дескриптором), но как ошибка: test.nginx | [error] 5#5: *6 connect() failed (111: Connection refused) while connecting to upstream, client: 172.23.0.1, server: myapp.local, request: "GET / HTTP/1.1", upstream: "http://172.23.0.2:8080/", host: "myapp.local"

Дело в том, что приложение wordpress работает, когда я обращаюсь к нему из localhost:8080.

Есть ли проблема с приложением WordPress в этой конфигурации?Он не может обнаружить мой хост или что-то?Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 26 мая 2018

Я понял это.

Кажется, мне нужно использовать внутренний порт для моего proxy_pass, а не внешний.Например, для файла WordPress docker-compose.yml я должен написать прокси как:

#nginx/docker-compose.yml
server {
    listen 80;
    server_name myapp.local;

    #Docker DNS
    resolver 127.0.0.11;

    location / {
        set $docker_host "app_web_static"; 
        proxy_pass http://$docker_host:80; # here. the internal wordpress port
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...