connect ECONNREFUSED 172.19.0.4:80
есть два проекта. один фронтент на nuxt и vue и второй бекенд на laravel. оба проекта развернуты в docker (окружении laradock). у laradock я использую следующие контейнеры для работы: workspace, nginx, php-fpm, postgres.
В контейнере workspace лежат все проекты в папке projects, пути этих проектов примерно такие /var/www/projects/frontend и /var/www/projects/backend.
Бекенд развернут с помощью nginx, т.е. у меня есть файл /var/www/projects/backend/nginx.conf и у него такой конфиг (не забываем что бек на laravel):
server {
listen 80;
listen [::]:80;
server_name backend.localhost;
access_log /var/www/projects/backend/storage/logs/nginx_access.log;
error_log /var/www/projects/backend/storage/logs/nginx_errors.log;
root /var/www/projects/jujubackend/public;
index index.php;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
charset utf-8;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
# ...
}
и в своем браузере я могу зайти на index страницу бека по адресу http://backend.localhost. ну и естественно я добавил этот адрес в hosts файл (127.0.0.1 backend.locahost)
Фронтент на vue и используется nuxt. в конфиге nuxt.config.js у меня есть такое:
const APP_ENV = require('./.env.js')
// ...
let m = {
head: { /* ... */ },
css: [ /* ... */ ],
plugins: [ /* ... */ ],
router: { /* ... */ },
build: { /* ... */ },
env: {
// ...,
WS_URL: process.env.WS_URL || APP_ENV.ws_host + ':' + APP_ENV.ws_port,
API_DOMAIN: APP_ENV.api_host,
// ...,
}
}
module.exports = m;
и есть такие переменные в .env.js:
...
api_host: 'http://backend.localhost/',
ws_host: 'http://backend.localhost',
ws_port: 3000, // порт на котором запускается фронтенд (в браузере доступно по адресу localhost:3000)
...
И так. с такими настройками я иду в /var/www/projects/frontend (внутри контейнера workspace) и делаю npm run dev после чего мне выводится такое сообщение в терминале
по первой строке видно что запускается он с помощью nodemon. И теперь я перехожу в браузер и иду по адресу http://localhost:3000 после чего вижу такую картину:
Понятия не имею что делать. пока гуглил наткнулся на этот ответ, сделал как и сказали посмотрел ipV4 контейнера workspace и присвоил его для api_host, но не сработало (или может я не так что-то сделал). Еще интересная штука, если ввести в api_host и ws_host данные удаленного сервера, то все работает, т.е. получается проблема в том что я не знаю какие правильные адреса надо присвоить для для api_host и ws_host (адерса связанные с контейнерами).
вот некоторые конфиги докера (скопировал из docker desktop, из опции "Inspect" контейнера):
Порты workspace:
22/tcp - 0.0.0.0:2222
22/tcp - :::2222
3000/tcp - 0.0.0.0:3000
3000/tcp - :::3000
3001/tcp - 0.0.0.0:3001
3001/tcp - :::3001
4200/tcp - 0.0.0.0:4200
4200/tcp - :::4200
8000/tcp - 0.0.0.0:8001
8000/tcp - :::8001
8080/tcp - 0.0.0.0:8080
8080/tcp - :::8080
Порты nginx:
443/tcp - 0.0.0.0:443
443/tcp - :::443
80/tcp - 0.0.0.0:80
80/tcp - :::80
81/tcp - 0.0.0.0:81
81/tcp - :::81
docker network ls:
NETWORK ID NAME DRIVER SCOPE
373b965bde34 bridge bridge local
7aee9802176e elf_backend bridge local
4e357e9c2f92 elf_default bridge local
91166549f88b elf_frontend bridge local
e36e75e5f6cd host host local
33c3c079da0a none null local

