@Artem0071
Безработный mr. Junior

Как связать docker + nginx + vite + php?

Есть проект, в нем такая структура:
- core - (laravel проект)
- web - vue проект (с использованием vite)
- docker - папка с Dockerfile'ами
- docker-compose.yml

Что нужно:
localhost:80 - отображать фронтовой проект (тот что на vue)
core.localhost:80 - отображать бекендовский проект (тот который на laravel)

Что сделал:
создал default.conf

server { #
    listen       80;
    listen  [::]:80;

    server_name  localhost;

    location / {
        proxy_pass http://project_web:8000;
    }
}

server {
    listen       80;
    listen  [::]:80;

    server_name core.localhost;

    root /var/www/core/public;

    charset utf-8;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    location / {
        try_files $uri /index.php?$query_string;
    }

    location ~\.php {
        fastcgi_index index.php;
        fastcgi_pass project_core:9000;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}



docker-compose.yml

version: '3'

services:
  proxy:
    build:
      context: .
      dockerfile: ./docker/proxy/Dockerfile
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./docker/proxy/conf.d:/etc/nginx/conf.d
      - ./core:/var/www/core
    depends_on:
      - core
      - web
    container_name: project_proxy

  core:
    build:
      context: .
      dockerfile: ./docker/core/Dockerfile
    volumes:
      - ./core:/var/www/core
    working_dir: /var/www/core
    container_name: project_core

  web:
    build:
      context: .
      dockerfile: ./docker/web/Dockerfile
    volumes:
      - ./web:/var/www/web
    working_dir: /var/www/web
    command: npm run dev
    container_name: project_web



В чем проблема:
Если с laravel я как то поборолся, то с фронтом не понимаю как это нужно сделать
Там запускается по команде npm run dev, но пока он запускается, nginx говорит что nginx: [emerg] host not found in upstream "web"

Я пробовал добавлять в web command: npm run dev, но хоть и стоит depend_on, nginx умирает, а проект вроде как запускается, но его собственно не видно изза nginx'а

PS. Добавил restart: always, теперь nginx работает, но при заходе на страницу он выдает:
[error] 22#22: *5 connect() failed (111: Connection refused) while connecting to upstream, client: 172.19.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://172.19.0.2:8000/", host: "localhost"
  • Вопрос задан
  • 749 просмотров
Пригласить эксперта
Ответы на вопрос 1
@krosh
nginx не может проксировать трафик на апстрим.
В default.conf замените project_core на core, project_web -> web.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы