Не видит айпи докер контейнера
Не могу сделать запрос правильный с фронтэнда на бэк когда запущено через докер
Все 3 контейнера (фронт на реакте, бэк на ноде и постгрес) запускаю через docker-compose:
version: '3'
services:
front-react:
build:
context: ./client
environment:
NODE_ENV: development
depends_on:
- server-dev
volumes:
- ./client:/client
- /client/node_modules
ports:
- "3000:3000"
server-dev:
build:
context: ./server
environment:
NODE_ENV: development
ports:
- "5002:5002"
depends_on:
- database
volumes:
- ./server:/server
- /server/node_modules
database:
image: postgres:14.2-alpine
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_USER=postgres
- POSTGRES_DB=rssParser
ports:
- "5432:5432"
volumes:
server-dev:
Все отлично работает, фронт запустился и работает, бэк тоже запущен и в базу постоянно закидывает новости через парсер. Но стоит мне сделать запрос через ссылку к базе типа:
http://127.0.0.1:5002/api/login
Мне выдает ошибку. И через постман тоже! Вероятно ошибка в айпи сервера, и оно должно быть не локалхост, а или название докер контейнера или айпи его, но и они тоже не дают результат... Пробовал еще делать запросы:
http://rss_parser_server-dev_1:5002/api/registration
http://localhost.rss_parser_server-dev_1:5002/api/registration
http://rss_parser_server-dev:5002/api/registration
http://172.20.0.3:5002/api/registration
вот контейнеры которые запущены:
Name Command State Ports
------------------------------------------------------------------------------------------------------------
rss_parser_database_1 docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp,:::5432->5432/tcp
rss_parser_front-react_1 docker-entrypoint.sh /bin/ ... Up 0.0.0.0:3000->3000/tcp,:::3000->3000/tcp
rss_parser_server-dev_1 docker-entrypoint.sh /bin/ ... Up 0.0.0.0:5002->5002/tcp,:::5002->5002/tcp
вот айпи сервера:
sudo docker inspect rss_parser_server-dev_1 | grep "IPAddress"
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.20.0.3"
Я не понимаю где я облажался... помогите пожалуйста. Может где то что то надо в хост прописать, но тогда почему и через постман не работает запросы...
Ошибку в постман выдает: Error: connect ECONNREFUSED 172.20.0.3:5002
Ответы (1 шт):
Все теперь стало понятно) два дня поиска не там где надо показали что надо кое где убрать,а именно был файл server.js:
require(`dotenv`).config();
const http = require('http');
const app = require('./app');
const PORT = process.env.PORT || 5002
const server = http.createServer(app);
server.listen(PORT, '127.0.0.1', () => {console.log(`Server is running on ${PORT} port!`)});
Поменял на вот такой:
require(`dotenv`).config();
const http = require('http');
const app = require('./app');
const PORT = process.env.PORT || 5002
const server = http.createServer(app);
server.listen(PORT, () => {console.log(`Server is running on ${PORT} port!`)});
Все, запросы можно делать, все ок!)