WordPress docker изображение и nginx обратный прокси - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь использовать docker -compose для создания динамической c и быстрой среды разработки, и я хочу использовать nginx для маршрутизации всех сервисов. Это моя конфигурация:

docker -compose.yml

version: '3.1'

services:
  nginx:
    image: nginx
    ports:
        - 80:80
    volumes: 
        - ./nginx:/etc/nginx/conf.d
  wordpress:
    image: wordpress
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - ./wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - ./db:/var/lib/mysql

nginx conf.d

server {
    listen 80;
    server_name localhost;
    location / {
        proxy_pass http://wordpress:80/;
        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $host;

    }
}

Но это не работает, оно всегда пытается перейти от http://localhost к http://localhost: 8080

Что мне делать?

1 Ответ

1 голос
/ 20 апреля 2020

Вот основные проблемы, которые необходимо устранить в примере кода:

  • Оба nginx и wordpress Docker изображения прослушивают порт 80 по умолчанию. Так что вы должны сопоставить wordpress с другим. Например, 8080

  • Все изображения не смогут видеть друг друга, если вы не настроите для них сеть.

  • Обновление nginx конфигурация для удаления порта для wordpress. Находясь в одной и той же сети, они видят друг друга, используя только имена своих хостов (таким образом, их имя образа)

  • Пришлось изменить способ объявления объёмов, используемых wordpress и mysql images

Вот что я предлагаю:

docker -композит

version: '3.1'

services:
  nginx:
    image: nginx
    ports:
        - 80:80
    volumes: 
        - ./nginx:/etc/nginx/conf.d
    networks:
      - backend

  wordpress:
    image: wordpress
    ports:
        - 8080:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html
    networks:
      - backend

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql
    networks:
      - backend

volumes:
  wordpress:
  db:

networks:
  backend:
    driver: bridge

nginx .conf

server {
    listen 80;
    server_name localhost;
    location / {
        proxy_pass http://wordpress/;
        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $host;

    }
}

Более подробную информацию о работе сети можно найти в Docker Составить в документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...