Я создаю веб-приложение с созданием-реакции-приложения в качестве внешнего интерфейса и WordPress API в качестве внутреннего интерфейса. Я хочу использовать докер для бесшовного развертывания.
Все работает само по себе (я могу связаться с бэкэндом через почтальона), но веб-интерфейсу не удается связаться с бэкэндом, что приводит к следующей ошибке:
Proxy error: Could not proxy request /wp-json/wp/v2/pages from localhost:3000 to http://localhost:8000.
Вот мой докер-compose.yml:
version: '3'
services:
# Database
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: xxx
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: xxx
networks:
- wpsite
# phpmyadmin
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '8080:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: xxx
networks:
- wpsite
# Wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8000:80'
restart: always
volumes: ['./:/var/www/html']
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: xxx
networks:
- wpsite
# frontend
frontend:
volumes:
- ./frontend/src:/usr/src/app/src
- ./frontend/public:/usr/src/app/public
command: npm run start
build: ./frontend
ports:
- 3000:3000
links:
- wordpress
networks:
wpsite:
volumes:
db_data:
Вот внешний интерфейс Dockerfile:
FROM node:10-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
ADD src /usr/src/app/src
ADD public /usr/src/app/public
RUN npm build
CMD [ "npm", "start" ]
и внешний пакет package.json:
{
"name": "frontend",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.19.0",
"classnames": "^2.2.6",
"node-sass": "^4.12.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-router-dom": "^5.0.1",
"react-scripts": "3.0.1"
},
"scripts": {
"start": "PORT=3000 react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"proxy": "http://localhost:8000"
}
Я полагаю, это как-то связано с контейнерами докеров, каждый из которых создает свой собственный 'localhost', поэтому порт 8000, который я пытаюсь использовать для прокси, не существует в области действия своего собственного контейнера?
Но я теряюсь в том, как ее решить, и буду очень признателен за любую помощь!