#wordpress #docker #nginx #docker-compose
#wordpress #docker #nginx #docker-compose
Вопрос:
Я пытаюсь понять, как работает сеть docker и тому подобное. Итак, вот моя настройка, у меня есть 2 контейнера docker с WordPress и mysql. И эти двое должны иметь возможность общаться друг с другом через прямые подключения к базе данных. И у меня также есть домен, на который они указывают. Итак, я попытался настроить его с помощью прокси-сервера docker nginx, но когда я пытаюсь посетить этот сайт через домен, я получаю шлюз 502 bat.
Итак, мой файл компоновки прокси-сервера docker ngxinx выглядит следующим образом, но с разными портами:
version: "3.1"
services:
nginx-proxy:
image: jwilder/nginx-proxy:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./certs:/etc/nginx/certs
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
networks:
default:
external:
name: nginx-proxy
И оба моих контейнера WordPress выглядят так:
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
VIRTUAL_HOST: wp1.local
VIRTUAL_PORT: 3000
volumes:
- ./wp:/var/www/html
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
expose:
- 3000
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
ports:
- "8086:3306"
mailhog:
image: mailhog/mailhog
ports:
- "1025:1025" # smtp server
- "8025:8025" # web ui
networks:
default:
external:
name: nginx-proxy
volumes:
db:
И я добавил 127.0.0.1 wp1
в /etc/hosts
Но когда я запускаю прокси и один из контейнеров WP, я получаю плохой шлюз. И я понятия не имею, как двигаться дальше. И, возможно, это даже не правильный способ сделать это. Потому что проблема, которую я пытаюсь решить, заключается в том, что wp2 должен иметь возможность подключаться к базе данных wp1 через пользовательское pdo-соединение.
Я пытался объяснить как можно лучше, но это новая область для меня, когда дело доходит до сетей docker. Также я использую docker для Windows с wsl2
Ответ №1:
Вы должны добавить
networks:
- default
для каждого определения службы в docker-compose.
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
VIRTUAL_HOST: wp1.local
VIRTUAL_PORT: 3000
volumes:
- ./wp:/var/www/html
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
expose:
- 3000
networks:
- default
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
ports:
- "8086:3306"
networks:
-default
mailhog:
image: mailhog/mailhog
ports:
- "1025:1025" # smtp server
- "8025:8025" # web ui
networks:
- default
networks:
default:
external:
name: nginx-proxy
volumes:
db: