Вот основные проблемы, которые необходимо устранить в примере кода:
Оба 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 Составить в документацию .